2013-01-06 40 views
1

我主要有一個Activity類,一個廣播類(廣播接收器的子類)和其他幾個類。我使用在廣播級中創建的Handler,以便將來執行某些操作。但是如果有些情況出現(用戶想要退出應用程序),我想要Handler取消(阻止執行)。來自主要活動的參考處理程序對象

我在SO上讀了很多關於如何取消Handlers的線索,我知道如何從同一類(Handler.removeCallback (Runnable),Handler.removeMessages(0)等)。但我不知道如何取消我的Activity。 (用戶按下退出按鈕,如果處理程序將要做一些工作,我想要阻止它)。

那麼如何引用Activity類中的處理程序對象(即將執行)呢?

回答

0

我不知道我完全理解你的問題,但是,如果你想通過活動取消Handler,你可以把它放在方法:

@Override 
public void onPause() { 
    super.onPause(); 
    handler.removeCallbacks(runnable); 
} 

的方法被調用時,一項活動即將被用戶隱藏起來。

重新閱讀您的問題後,如果您的意思是您想訪問Activity類的BroadcastReceiver類中的處理程序,則應該使處理程序成爲您活動的成員變量。

public class MyActivity extends Activity { 

    private Handler mHandler = new Handler(); 

    public class BroadcastReceiver mReceiver = new BroadcastReceiver() { 

     public void onReceive (Context context, Intent intent) { 
      // ... use mHandler in here .... 
      mHandler.postDelayed(runnable, 1000); 
     } 

    } 

    // ... rest of the code ... 

    @Override 
    public void onPause() { 
     super.onPause(); 
     handler.removeCallbacks(runnable); 
    } 

} 

可以使用mHandler使用handler你BroadcastReceiverActivity類中。你必須確保你的BroadcastReceiver類是而不是 a static內部類的Activity

相關問題