0

我有一个方法可以让我使用(处理程序)每隔 x 秒使用 postAtTime 连续循环,除了这个方法被放置在活动 A 中,当进入活动 B 然后返回到 A 以按下停止按钮进行 finsih 循环,我无法阻止它,mHandler.removeCallbacks (..)我在这里附上了方法

按钮开始:

mHandler.postAtTime(mUpdateTimeTask, 100);

环形:

private  Runnable mUpdateTimeTask = new Runnable() {
     public void run() {
          Toast.makeText(getBaseContext(),"ok!",Toast.LENGTH_SHORT).show();
          mHandler.postDelayed(this, 1000);
      }
   };

按钮停止:

mHandler.removeCallbacks(mUpdateTimeTask);
4

2 回答 2

0

如果您试图从创建它的 Activity 中阻止它,这应该可以工作。如果不是,则有其他问题。

你在哪里分配 mHandler?如果它在 onResume 中,那么您正在尝试从不同的 Handler 实例中删除回调。

您是从 Activity B 返回到 Activity A 的同一个实例,还是一个新实例?

于 2012-08-22T23:28:55.610 回答
0
// In your handler
SharedPreferences sp = context.getPreferences();
boolean loop = sp.getBoolean("should_loop_ad_infinatium", false);
if (loop) {
    Toast.makeText(context, "ok", Toast.LENGTH_SHORT).show();
    mHandler.postDelayed(this, 1000);
}

从另一个活动

SharedPreferences sp = context.getPreferences();
Editor e = sp.edit();
e.putBoolean("should_loop_ad_infinatium", false);
e.commit();
于 2012-08-22T22:55:05.173 回答