簡體   English   中英

Android BroadCastReceiver滯后應用程序

[英]Android BroadCastReceiver lagging application

我在活動中使用的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個需要添加此廣播接收器的活動中執行此操作時,我的應用程序開始滯后並且變得比以前慢。

因此,有沒有其他更好的方法來監視意圖過濾器而不會減慢應用程序/或我所處的最佳狀態。

提前致謝!

與其在Activity的上下文中注冊接收者,不如在您的第一個活動中在應用程序的上下文中注冊它,如下所示:

getApplication()。registerReceiver(receiver,intentFilter);

這樣,即使您的活動進入“暫停”狀態,您的接收器也將保持活動狀態,因為您的應用程序將繼續在后台運行。

希望這可以幫助。

  • 不要在onCreate中注冊您的廣播接收器。 在您的情況下,在onResume中注冊它並在onPause中注銷是安全且足夠的
  • 您必須在接收方方法中進行一些重負載處理。 Android提供了一個10秒的窗口來執行接收器中您想要的任何操作,否則它將聲明為ANR
  • 為避免延遲,請在新的工作線程上加載處理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM