我的代码中有一个for循环作为后台线程的一部分。在循环中执行代码的部分方法我想要一个等待期,所以我调用thread.sleep。我发现如果手机显示屏在等待期间关闭,则等待时间会变得不稳定。根据文件,睡眠不是时间可靠的。所以我想知道要替换什么。据我所知,如果我创建一个后延迟子线程,我将失去for循环中的连续性。我希望我错了,并且不能正确理解这些机制 - 任何帮助都会受到赞赏。 罗恩
答案 0 :(得分:1)
处理sleep()不可靠性的一种方法是添加代码来测量你睡觉的实际时间。这通常在动画中完成,例如,可以做出决定,跳过一定数量的帧以赶上实时。
答案 1 :(得分:0)
您可以使用处理程序并致电postDelayed吗?老实说,我不能声称它有多可靠,或者它是否适合你的问题,但是我用它来进行小规模的定期更新。
您也可以查看Partial Wake Locks,看看是否可以为您提供更可靠的效果。
答案 2 :(得分:0)
你需要这样的东西:
(...)
Message msg = new Message();
try {
myHandler.sendMessageDelayed(msg,1000);
} catch (Exception e) {
Log.d(TAG,"Hum?",e);
}
}
}
private Handler myHandler= new Handler() {
/*
* (non-Javadoc)
*
* @see android.os.Handler#handleMessage(android.os.Message)
*/
@Override
public void handleMessage(Message msg) {
//DO WHAT YOU WANT..
}
};