Android随手记—Android M闪退小记
编程环境
- Android Studio 3.0.1
问题
- MyPrivacy 在android M上闪退,在模拟器中复现.提示
1
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应用设置时,才出现,而且 7.1无问题.模拟器复现,抓log.
解决
- log的意思是启动activity的context不是 activity.
- 对应代码
1
2
3Intent intent = new Intent(MyApplicantion.getContext(), AppSettingActivity.class);
intent.putExtra("PackageName", AppId);
MyApplicantion.getContext().startActivity(intent); - 需要对intent声明 FLAG_ACTIVITY_NEW_TASK
1
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
备注
- 网上的原因分析:
- 因为standard模式的Activity默认会进入启动它的Activity所属的任务栈中,但是由于非Activity类型的context(ApplicationContext)并没有所谓的任务栈,所以就出现问题了。需要指定Activity为FLAG_ACTIVITY_NEW_TASK标记位,这样启动的时候,就会为它创建一个新的任务栈了。–android开发艺术探究
相关文章