繁体   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