美文网首页
非Activity执行startActivity()

非Activity执行startActivity()

作者: qpan | 来源:发表于2018-03-20 10:12 被阅读17次

在 非activity环境下(比如ApplicationContext,service等)下执行startActivity(),
会报以下异常:

               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794) 
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684) 
                                                                at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102) 
                                                             Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
                                                                at android.app.ContextImpl.startActivity(ContextImpl.java:757)
                                                                at android.app.ContextImpl.startActivity(ContextImpl.java:737)
                                                                at android.content.ContextWrapper.startActivity(ContextWrapper.java:331)
                                                                at com.pq.tools.MainActivity.transform(MainActivity.java:34)
  • 原因:
    默认的activity的启动方式是:standard,即新打开的页面放在打开它的页面所在的任务栈中;而非activity的Context类型来打开页面,那么它是没有所谓的任务栈的,因此打开失败;
  • 方案:
    打开页面时增加一个flag:FLAG_ACTIVITY_NEW_TASK ,表示新建一个任务栈

相关文章

网友评论

      本文标题:非Activity执行startActivity()

      本文链接:https://www.haomeiwen.com/subject/bajvqftx.html