2013-03-24 22 views

回答

5

我建議你使用LocalBroadcastManager。這就像一個BroadcastReceiver,其Intents只能在你的應用程序中看到。

private BroadcastReceiver receiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // your code here 
    } 
}; 

@Override 
protected void onPause() { 
    LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver); 
    super.onPause(); 
} 

@Override 
protected void onResume() { 
    LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this); 
    IntentFilter filter = new IntentFilter(); 
    filter.addAction(MyClass.MY_ACTION); 
    lbm.registerReceiver(receiver, filter); 
    super.onResume(); 
} 
+0

這實際上是我在做什麼,但因爲我創建一個自定義視圖(不具有的onDestroy等活動)的過程中我註冊 - 我無法找到一個合適的地方註銷我的接收器。 。所以目前我沒有:/ – 2013-04-10 07:27:36

+3

視圖(或自定義視圖)沒有像活動或服務那樣的生命週期,因此無法知道它何時被銷燬或隱藏。您應該控制所有視圖中包含它們的活動的所有註冊/取消註冊操作。 – vggonz 2013-04-10 08:03:10

+0

我會以此爲答案,儘管我也希望自定義視圖也可以在這個意義上是獨立的,這實際上是限制性的......如果有人有一個我很想聽到的想法,謝謝。 – 2013-04-14 11:18:43