2

我已经开发 iOS 应用程序很长一段时间了,现在我已经切换到 android。我有一个要求,当视图出现(onResume)时我必须启动计时器(在 Android 中,我需要使用处理程序)并在视图消失(onPause)时使计时器无效(停止处理程序)。我能够创建可运行的处理程序,但无法停止它。我的代码是:

     protected void AutoRefresh() {
     try{
handler.postDelayed(new Runnable() {
                     public void run() { 
                          new LongOperation().execute("");
                         }
                         AutoRefresh();

                 }, 60000);
    }
        catch(Exception ex){

        }

}

现在,当视图消失时,我怎样才能停止这个处理程序线程。如果它不是在 android 中执行计时器的正确方法,也请发表评论。

4

1 回答 1

2

当视图出现时(onResume)并在视图消失时(onPause)使计时器无效(停止处理程序)。我能够创建可运行的处理程序,但无法停止它。

保留对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'sonPostExecute方法中,您可能需要Activity在刷新 UI 或与Activity.

如果它不是在 android 中执行计时器的正确方法,也请发表评论。

您似乎需要在某个时间间隔内执行一项操作,并且使用 aHandler是这样做的方式,我认为您不需要计时器。

于 2013-02-23T09:07:07.607 回答