2012-01-20 68 views
0

我遇到了BroadcastReceiver問題,我正在使用這些問題進行我的活動。實際上,我這樣做:Android BroadCastReceiver滯後應用程序

onCreate()

 receiver = new BroadcastReceiver() { 
     public void onReceive(Context context, Intent intent) { 
      if(intent.getAction().equals("finish")) { 
      // some code 
      }    
     } 
    }; 
    registerReceiver(receiver, intentFilter); 

onResume()onPause()我這樣做:

@Override 
public void onResume(){ 
    super.onResume(); 
    MyCollectionList.this.registerReceiver(receiver, intentFilter); 
} 

@Override 
public void onPause(){ 
    super.onPause(); 
    MyCollectionList.this.unregisterReceiver(receiver); 
} 

其中的IntentFilter是:

IntentFilter intentFilter = new IntentFilter("finish"); 

當我在6個活動中完成這項工作時,我需要添加這個廣播接收器我的應用程序開始滯後,並且比以前變得更慢。

因此,有沒有其他更好的方式來監視意向過濾器,而不會放慢應用程序/或在我的情況下最好的方式。

在此先感謝!

回答

1
  • 不要在onCreate註冊您的廣播接收器。在onResume中註冊並取消註冊在您的案例中是安全和足夠的
  • 您必須在接收方法中執行一些重負載處理。 Android提供了一個10秒的窗口來執行你想要什麼都在你的接收機否則將宣佈它作爲ANR
  • 爲了避免滯後,在新的工作線程加載處理
+0

實際上,我的應用程序僅在我開始沿標籤移動時纔會滯後,因爲我已將該接收器放入每個作爲標籤內容的活動中。 –

1

而是用活動的情況下注冊您的接收器,請在您的第一個活動中將您的應用程序的上下文註冊爲以下內容:

getApplication()。registerReceiver(receiver,intentFilter);

即使您的活動進入「暫停」狀態,您的接收器仍將保持活動狀態,這樣您的應用程序將繼續在後臺運行。

希望這會有所幫助。

相關問題