2012-08-22 37 views
0

我遇到問題。我有一個方法,使用(Handler)每x秒使用postAtTime進行連續循環,不同之處在於此方法放置在活動A中,進入活動B時返回A按finsih循環的停止按鈕,如何停止使用(Handler和postAtTime)從不同的活動創建的循環,創建它的循環?

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 (..)我附上這裏的方法

按鈕來啓動停止

mHandler.removeCallbacks(mUpdateTimeTask); 
+1

請在回答問題後不要刪除問題的文字。發佈在Stackoverflow上的所有問題都保留以供將來參考,希望能夠幫助未來的訪問者和用戶。 – Jocelyn

回答

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(); 
+0

謝謝,但是您認爲我可以使用這種方法在創建它的同一活動中停止循環,或者在活動A的停止按鈕中使用您的代碼「從另一個活動」? (B)之後通過其他活動。如何初始化上下文? – pippo87

+0

此代碼應該與活動無關。 – AedonEtLIRA

0

如果你試圖從創建它的活動停止,這應該工作。如果不是,其他的是錯誤的。

你在哪裏分配mHandler?如果它在onResume中,那麼你試圖從一個不同的Handler實例中刪除回調。

您是否正在從活動B返回到活動A的同一個實例,還是新的?