android4.0 杀掉应用后注册静态广播不能启动

静默加载 应用层 吉林大学 Android研发工程师  2015-07-13 10:12:12
程序(只有一个activity和broadcastreceiver)注册来电广播,程序在任务栏里存在时,正常。当从任务栏划掉时(kill掉应用进程)后,无法捕获广播。
网上找了很多资料显示说:这是android系统在3.1版本以后为了加强系统安全性和优化性能对系统广播进行了限制。
想问问解决办法。。。。。。
...全文
826 点赞 收藏 19
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
索吻的贼 2016-01-21
引用 16 楼 stven_king 的回复:
引用 15 楼 u013405006 的回复:
弄个service试试,后台服务,这样应该就能有了
说的就是Service被杀死了,怎么重启。。。。。
你说的不是广播吗?是service死掉了?需要通过广播重启service还是?代码中动态注册的广播会随着Activity的kill而kill,我没记错的话,静态的是可以得。然后如果静态注册还是不行的话,就把广播放在service中,前台的任务管理并不会kill掉service。。。
回复
静默加载 应用层 2016-01-20
引用 17 楼 hjywyj 的回复:
android5.0之前可以试试双进程
恩,现在这个是一种做法,守护进程。但android5.0之后为什么不可以了?????
回复
android5.0之前可以试试双进程
回复
静默加载 应用层 2016-01-19
引用 15 楼 u013405006 的回复:
弄个service试试,后台服务,这样应该就能有了
说的就是Service被杀死了,怎么重启。。。。。
回复
索吻的贼 2016-01-18
弄个service试试,后台服务,这样应该就能有了
回复
静默加载 应用层 2016-01-15
引用 12 楼 aion380687811 的回复:
startIntent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 楼上已经有人说了解决办法的。昨天我也遇到这个问题,只要发广播之前,给intent添加这个flag就好了。
这个遇到安全卫士就玩玩,你在framework层做的都可能被各种干掉。只能想让他干掉之后重启
回复
唛头 2016-01-15
或者你可以想办法让你的程序杀不死!就像qq微信这样一直会存在后台,很难杀死
回复
唛头 2016-01-15
startIntent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 楼上已经有人说了解决办法的。昨天我也遇到这个问题,只要发广播之前,给intent添加这个flag就好了。
回复
静默加载 应用层 2016-01-15
引用 10 楼 photondncs 的回复:
问一下,楼主问题解决了吗
从framework层现在没有办法解决,现在手机厂商各种定制。原生的Android系统已经被改的面目全非了。只能考虑从linux层解决。
回复
若小涯 2015-12-28
问一下,楼主问题解决了吗
回复
胖蔡 2015-12-19
android系统对广播接收的设置是,当前默认为不可接收系统广播状态(防止流氓软件),只有当用户运行过该app时才会设置为该app为可以接收系统广播,也就是说我们一般的软件只有打开运行过一次,才可以接收广播(系统级别应用除外)。
回复
daxiniot 2015-12-18
Android的有些广播监听器必须得依赖于某个服务或者应用才能一直生存,如果服务或者应用被杀掉了,那么广播监听器也会死掉。 可以开一个前台服务,在该前台服务中注册监听器。前台服务不会被划掉杀死,前台服务不死,监听器就会一直有效。有个缺点是 手机屏幕的上面会有一个小图标显示,就像音乐app设置的前台服务那样。
回复
静默加载 应用层 2015-12-18
引用 6 楼 qq_26800005 的回复:
楼主 解决了吗?
并没有~!
回复
qq_26800005 2015-10-05
楼主 解决了吗?
回复
oYinCanCan 2015-07-14
可不可以在Activity里的onDestroy()方法里写一句startBroadcast呢?
回复
静默加载 应用层 2015-07-14
需要捕获的是系统广播不是由程序自己定义的广播。 楼上说“4.0以后默认flag改变了”,能详细说一下解决办法吗?
回复
AS_MSDN 2015-07-14
4.0以后默认flag改变了
回复
AS_MSDN 2015-07-14
Intent startIntent = new Intent(); startIntent.putExtra("pkg", getPackageName()); startIntent.setAction("com.lenovo.speechcamera.start"); startIntent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); sendBroadcast(startIntent);
回复
相关推荐
发帖
Android
创建于2009-10-09

7.8w+

社区成员

移动平台 Android
申请成为版主
帖子事件
创建了帖子
2015-07-13 10:12
社区公告
暂无公告