我有一个方法,使用(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);
答案 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的相同实例,还是新活动?