在视图出现时创建计时器(处理程序),并在视图消失时停止计时器

时间:2013-02-23 08:24:31

标签: android android-handler

我一直在开发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中做定时器实现的正确方法,也请评论。

1 个答案:

答案 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是这样做的方式,我认为您不需要计时器。