BroadcastReceiver 启动activity(在activity之外启动一个activity)
来源:互联网 发布:国内微电网数据统计 编辑:程序博客网 时间:2024/06/06 10:59
**
* 在BroadcastReceiver中启动Activity的问题
*
* 如果在BroadcastReceiver的onReceive()方法中如下启动一个Activity
* Intent intent=new Intent(context,AnotherActivity.class);
* context.startActivity(intent);
* 可捕获异常信息:
* android.util.AndroidRuntimeException:
* Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag.
* Is this really what you want?
* 它说明:在Activity的context(上下文环境)之外调用startActivity()方法时
* 需要给Intent设置一个flag:FLAG_ACTIVITY_NEW_TASK
*
* 所以在BroadcastReceiver的onReceive()方法中启动Activity应写为:
* Intent intent=new Intent(context,AnotherActivity.class);
* intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
* context.startActivity(intent);
*
*
* 之前描述了问题的现象和解决办法,现在试着解释一下原因:
* 1 在普通情况下,必须要有前一个Activity的Context,才能启动后一个Activity
* 2 但是在BroadcastReceiver里面是没有Activity的Context的
* 3 对于startActivity()方法,源码中有这么一段描述:
* Note that if this method is being called from outside of an
* {@link android.app.Activity} Context, then the Intent must include
* the {@link Intent#FLAG_ACTIVITY_NEW_TASK} launch flag. 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.
* 说白了就是如果不加这个flag就没有一个Task来存放新启动的Activity.
*
* 4 其实该flag和设置Activity的LaunchMode为SingleTask的效果是一样的
*
*
* 如有更加深入的理解,请指点,多谢
*
*/
0 0
- BroadcastReceiver 启动activity(在activity之外启动一个activity)
- 在BroadcastReceiver中启动Activity
- 在BroadcastReceiver中启动Activity:
- BroadcastReceiver中启动Activity
- BroadcastReceiver中启动Activity
- 在BroadcastReceiver中启动Activity的问题
- 在BroadcastReceiver中启动Activity的问题
- 在BroadcastReceiver中启动Service或Activity
- 在BroadcastReceiver中启动Service或Activity
- 在BroadcastReceiver中启动Activity的问题
- 从BroadcastReceiver中启动activity
- Android -- BroadcastReceiver 中启动Activity
- android:activity:启动一个activity
- 1 启动一个Activity
- 启动另外一个Activity
- android 启动一个activity
- Training--启动一个Activity
- 启动另外一个Activity
- 《深入理解java虚拟机-高效并发》读书笔记
- android开发状态栏相关汇总
- 基于freeglut的使用入门 三角形及多个图像绘制
- hadoop集群启动后,两个namenode都是standby
- 学生信息管理系统
- BroadcastReceiver 启动activity(在activity之外启动一个activity)
- 研发流程学习
- <c:forEach varStatus="status">中 varStatus的属性简介
- Java 解决采集UTF-8网页空格变成问号乱码
- opencv 示例
- 聊聊并发 深入分析ConcurrentHashMap
- CUDA系列学习(五)GPU基础算法: Reduce, Scan, Histogram
- 2017规划
- 多线程访问共享区示例