app被杀死或者没运行,广播接受者接收消息

广播接受者是Android四大组件之一,日常开发中可能会遇到的疑问是假设app被杀死了,
注册的广播接受者还能正常接收广播吗。

  如果app想在被杀死的情况下接收到广播的话,看以下代码:

发送方:
 
Intent intent=new Intent();
intent.setAction("");
intent.addCategory("");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
this.sendBroadcast(intent);
接受方:

首先在AndroidManifest.xml中

<receiver
    android:name=".LuncherReceiveer"
    android:exported="true">
    <intent-filter>
        <action android:name="" />
        <category android:name="" />
    </intent-filter>
</receiver>
LuncherReceiveer里面
public class LuncherReceiveer extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if ("".equals(intent.getAction())){
           Log.e("收到发过来的消息");
        }
    }
}
注意:
Intent.FLAG_INCLUDE_STOPPED_PACKAGES这个flag必须加上,从android3.1开始,android为了防止无意或者不必要
的开启未启动的app服务,设置了两个flag,分别为FLAG_INCLUDE_STOPPED_PACKAGES
(表示包含未启动的App)和FLAG_EXCLUDE_STOPPED_PACKAGES(表示不包含未启动的App),
控制intent是否对处于停止状态的app起作用。

    有些手机因为有自启动权限管理,如华为和小米,需要把app的自启动打开才能正常。而且有些童鞋说必须得停止状态的app启动过一次才能代码生效,我测试了一下,把测试包装到手机上,不打开,然后发送广播,发现app还是能打开。


                
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值