这更像是一个无知而不是无能的问题。我正在尝试构建一个计时器应用程序,但发现 CountDownTimer 对象对于我的目的来说太不准确了。因此,我想手动创建计时器,只需勾选每个时间单位并在每个滴答上执行某种操作(不必倒计时,因为我将手动处理) - 是否有内置对象要做这个(CountDownTimer 除外),还是我必须使用线程/睡眠?
问问题
290 次
2 回答
1
使用 aHandler
和postDelayed()
方法。准确且易于使用。您只需要在每个循环之后继续放置回调,但这并不太繁琐,并且可以让您根据需要调整间隔。
Handler timeThing = new Handler();
Runnable timedWorker = new Runnable {
public void run(){
// Do work
timeThing.postDelayed(this, 10000); // do it again later
}
};
timeThing.postDelayed(timedWorker, 10000);
于 2013-01-18T01:05:35.750 回答
0
使用AsyncTask
和Thread.sleep()
:
AsyncTask task=new AsyncTask<Void,Void,Void>() {
@Override
protected Void doInBackground(Void... params) {
while (!isCancelled()) {
try {
Thread.sleep(1000);
publishProgress();
} catch (InterruptedException e) {
break;
}
}
return null;
}
@Override
protected void onProgressUpdate(Void... values) {
//do something here
}
};
//task.execute(); to start
//task.cancel(); to stop
Your onProgressUpdate()
will be called every N seconds (1000 in this example).
于 2013-01-18T01:07:58.710 回答