我是android的初学者。
我想要的是什么: 在这里,我试图实现该子处理程序应该调用主处理程序的每秒10次。那个主处理程序应该持续到20秒。
问题: 检查我\我已经使用了日志,但它不起作用。它进入子处理程序有时8次或有时9或10次。 是否有任何逻辑错误或是否有其他更好的方法来实现这一目标? 谢谢。
我的代码:
int i=0;
int cont;
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
i++;
cont = 1;
Log.e("main count", i + "");
final Handler handler1 = new Handler();
handler1.postDelayed(new Runnable() {
@Override
public void run() {
if (cont <= 10) {
Log.e("sub count ", cont + "");
cont++;
handler1.postDelayed(this, 100);
}
}
}, 100);
if (!(i == 20)) {
handler.postDelayed(this, 1000);
}
}
}, 1000);
答案 0 :(得分:0)
使用Handler执行具有精确计时的代码很困难,因为您必须自己测量时间。 使用内置类(如ScheduledThreadPoolExecutor或Timer)要容易得多。我推荐第一个,因为它需要对代码进行较少的更改。您应该根据您的要求选择scheduleAtFixedRate()或scheduleWithFixedDelay()方法之一。
_notificationService.Value().Value.... etc
您还可以使用单个ScheduledFuture,并在每次执行10次子计数代码后执行主计数代码。