我一直在开发iOS应用程序很长一段时间,现在我已经切换到了android。我有一个要求,我必须启动计时器(在Android中思考,我需要使用处理程序)当视图出现时(onResume)并且当视图消失时(onPause)使计时器(停止处理程序)无效。我能够创建可运行的Handler但无法阻止它。 我的代码是:
protected void AutoRefresh() {
try{
handler.postDelayed(new Runnable() {
public void run() {
new LongOperation().execute("");
}
AutoRefresh();
}, 60000);
}
catch(Exception ex){
}
}
现在,当视图消失时,如何停止此处理程序线程。如果不是在android中做定时器实现的正确方法,也请评论。
答案 0 :(得分:2)
当视图出现时(onResume)和无效的计时器(停止处理程序)时 视图消失(onPause)。我能够创建可运行的Handler但不能 能阻止它。
保留对您使用的Runnable
的引用:
private Runnable mRefresh = new Runnable() {
public void run() {
new LongOperation().execute("");
}
AutoRefresh();
}
//...
protected void AutoRefresh() {
handler.postDelayed(mRefresh, 60000);
}
并在onPause
中删除它:
handler.removeCallbacks(mRefresh);
请注意,这不会删除当前正在执行的Runnable
(如果有),因此在LongOperation
的{{1}}方法中您可能需要检查{在刷新用户界面或与onPostExecute
进行任何其他互动之前,{1}}仍然可用。
如果不是正确的计时器方法,也请评论 在android中实现。
您似乎需要在一定的时间间隔内执行操作,并且使用Activity
是这样做的方式,我认为您不需要计时器。