我正面临着在特定时间执行某些事情的问题。我的应用程序有一个Runnable
类,可以在特定时间执行方法。问题是有时Runnable
需要4000毫秒而不是3000毫秒才能执行。有没有办法纠正这个?
代码:
private Handler myhandler;
//onCreateMethod
myhandler = new Handler();
//runnable class
private Runnable myRunnable = new Runnable() {
public void run() {
methodToExecute();
myhandler.postDelayed(this, 3000);
}
};
答案 0 :(得分:2)
如果您需要更高的精度,请不要使用Handler.postDelayed,而是使用Timer
无论如何,正如评论中所述,android不是实时操作系统,但你应该获得更高的精度,比如2900到3100毫秒。
例如:
Timer.schedule(timerTask, 3000);
答案 1 :(得分:0)
似乎它适用于Timer(感谢@Yves Delerm):
如果某人有一天需要它,这是解决方案:
private Timer myTimer;
private int TIMERINTERVAL = 3000;
// inside onCreate
myTimer = new Timer();
myTimer.schedule(new TimerTask()
{
@Override
public void run()
{
myMethod();
}}, 0, TIMERINTERVAL);
private void myMethod()
{
// Some code
}