如何从不同的活动(创建它的那个)停止使用(Handler和postAtTime)创建的循环?

时间:2012-08-22 22:50:17

标签: android

我有一个方法,使用(Handler)每隔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);

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

如果您试图从创建它的Activity中停止它,这应该可行。如果不是,那就别错了。

你在哪里分配mHandler?如果它在onResume中,那么你试图从另一个Handler实例中删除回调。

您是从活动B返回活动A的相同实例,还是新活动?