Android

android8.0限制隐式广播的原因和解决方案

2020-12-22  本文已影响0人  瑟闻风倾

参考

(1) 为何限制隐式广播:在Manifest里面注册的系统广播接收器会被缓存在系统中,即使当App关闭之后,如果有相应的广播发出,应用程序仍然会被唤醒。比如如果有20个App在Manifest里面注册了ACTION_BOOT_COMPLETED的广播接收器监听设备启动,那么当设备启动时,就会有20个应用程序被唤醒并作出相应的动作。而动态注册的广播则跟随组件的生命周期而消存。因此在Manifest里面注册广播接收器的App越多,设备的性能就越容易受到影响,限制隐式广播主要是为了优化系统性能。
(2) 解决方案

IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction("com.xiaoqiang.try.something.receiver");
    TheReceiver receiver = new TheReceiver();
    registerReceiver(receiver, intentFilter);
Intent intent = new Intent("com.xiaoqiang.try.something.receiver");
    intent.putExtra("receive","test broadcast");
    intent.setPackage(getPackageName());
    //intent.setComponent(...)
    sendBroadcast(intent);
上一篇 下一篇

猜你喜欢

热点阅读