有没有看起来像安卓系统上的javax.swing.Timer的东西。我知道如何创建自己的线程,但是有没有像swing-timer这样的东西呢?
发布于 2011-09-01 00:28:26
还有Java的TimerTask。下面是我的代码中的一个例子,我正在播放音频样本:
import java.util.Timer;
import java.util.TimerTask;
// from constructor, shown here out of place
timer = new Timer();
// and in method, again, shown out of place:
INTERVAL_MILLISECONDS = (int)((double)(bufSize) / (double)(nativeSampleRate * 2) * 1000);
timer.scheduleAtFixedRate( new TimerTask() {
public void run() {
synchronized(this){
track.write(data, 0, bufSize);
track.play();
}
}
}, 0, INTERVAL_MILLISECONDS);发布于 2011-09-01 00:20:40
您可能正在寻找类android.os.CountDownTimer
你可以像这样继承这个类:
class MyTimer extends CountDownTimer
{
public MyTimer(int secsInFuture) {
super(secsInFuture*1000, 1000); //interval/ticks each second.
}
@Override
public void onFinish() {
Log.d("mytag","timer finished!");
}
@Override
public void onTick(long millisUntilFinished) {
//fired on each interval
Log.d("mytag","tick; " + millisUntilFinished + " ms left");
}
}发布于 2011-09-01 00:34:20
javax.swing.Timer的主要特点是在GUI线程(事件调度线程)上执行任务。这使得操作Swing组件变得安全。
在Android中也有EDT,你应该只使用manipulate GUI elements on EDT。要延迟您的代码,然后在EDT上运行它,请使用view.postDelayed(runnable)。
https://stackoverflow.com/questions/7260074
复制相似问题