Android BroadcastReceiver启动Activity中遇到的问题
来源:互联网 发布:中标软件 编辑:程序博客网 时间:2024/05/16 14:54
最近在学习使用BroadcastReceiver来做一个推送的demo,但是在点开通知栏弹出activity这个环节 bug百出,没办法人蠢就是这样第一次写成功率不高。原因有两个:
1.用隐式的方法启动Activity方法不对
在<intent-filter>中并未声明<category>属性;
原则上如果一个intent对象中没有种类(即种类字段为空)应该总是通过种类测试,而不管过滤器中有什么种类。但是有个例外,Android对待所有传递给 Context.startActivity()的 隐式intent它们至少包含"android.intent.category.DEFAULT"(对应CATEGORY_DEFAULT常量使得activity按照普通的activity启动)。 因此,活动想要接收隐式intent必须要在intent过滤器中包含"android.intent.category.DEFAULT“,也可以是"android.intent.category.LAUNCHER“(通常配合在action属性中将activity设置为程序入口来使用。
2.在BroadcastReceiver中启动Activity没有设置flag
在BroadcatReceiver中启动Activity时要按照下面的方法设置flag,大概的意思是要为新启动的Activity创建一个新的task队列和并且将队列中位于栈顶的全部移出。
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
为什么要这么做在源码中的解释是:
This is because,
* without being started from an existing Activity, there is no existing
* task in which to place the new activity and thus it needs to be placed
* in its own separate task.
- Android BroadcastReceiver启动Activity中遇到的问题
- Android初学习 - 在BroadcastReceiver中启动Activity的问题
- 在BroadcastReceiver中启动Activity的问题
- 在BroadcastReceiver中启动Activity的问题
- 在BroadcastReceiver中启动Activity的问题
- Android -- BroadcastReceiver 中启动Activity
- 关于在BroadcastReceiver中启动Activity的问题
- android 从broadcastReceiver的onReceive方法中启动activity
- BroadcastReceiver中启动Activity
- BroadcastReceiver中启动Activity
- 从BroadcastReceiver中启动activity
- 在BroadcastReceiver中启动Activity
- 在BroadcastReceiver中启动Activity:
- android中activity启动模式遇到的坑
- 在BroadcastReceiver中启动Service或Activity
- 在BroadcastReceiver中启动Service或Activity
- Android中context、activity、service、broadcastReceiver的使用
- android启动中遇到的2个问题
- 解决SDL/SDL.h: No such file or directory的方法
- 一种找到一组数中标记点的算法
- 蓝桥杯-算法训练-Anagrams问题
- 企业课堂----企业运营
- hdu 1272 小希的迷宫(并查集)
- Android BroadcastReceiver启动Activity中遇到的问题
- 视频压缩编码和音频压缩编码的基本原理
- 企业课堂----关于团队
- 机器学习实战笔记9(Apriori算法)
- 23种设计模式全解析
- iOS 如何创建单例对象
- 企业课堂----关于心态
- 微信公众平台“自定义回复”技巧
- JDBC中Dao层数据访问的逐步优化与总结