Android BroadCastReceiver滞后应用程序



我在活动中使用的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个活动中这样做时,我需要添加这个广播接收器,我的应用程序开始滞后,变得比以前慢。

那么,在我的情况下,有没有其他更好的方法可以在不减慢应用程序速度的情况下观察意向过滤器呢。

提前感谢!

不要用"活动"的上下文注册接收器,而是在第一个活动中用应用程序的上下文注册它,如下所示:

getApplication().registerReceiver(接收器,intentFilter);

这样,即使您的活动进入"暂停"状态,您的接收器也将保持活动状态,因为您的应用程序将继续在后台运行。

希望这能有所帮助。

  • 不要在onCreate中注册您的广播接收器。在onResume中注册并在onPause中注销对您来说是安全且足够的
  • 您必须在接收器方法中进行一些重载处理。Android提供了一个10秒的窗口,可以在接收器中执行您想要的操作,否则它将声明为ANR
  • 为了避免延迟,请将处理加载到新的工作线程上

最新更新