侧边栏壁纸
博主头像
Stars-One的杂货小窝博主等级

所有的创作都是有价值的

  • 累计撰写 276 篇文章
  • 累计创建 46 个标签
  • 累计收到 27 条评论

目 录CONTENT

文章目录

Android 非Activity启动新Activity报错问题记录

Stars-one
2024-06-05 / 0 评论 / 0 点赞 / 66 阅读 / 1231 字

一般我们是使用

Activity.startActivity()来启动一个新的Activity,但如果是在非Activity中调用startActivity,则会出现下面的错误提示:

(比如说在使用BroadcastReceiver、Service、Application等context启动)

```

android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

```

但这个错误比较神奇的地方,就是在Android7.0-Android8.x版本,如果你在非Activity调用`startActivity()`方法,是不会出现任何崩溃问题;

原因是官方代码判断逻辑有bug,导致崩溃问题没有出现..

总之记住一点:

非Activity启动activity,记得加上flag,如下代码:

```kotlin

val context = application

val intent = Intent(context, SplashActivity::class.java)

intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK

context.startActivity(intent)

```

## 参考

- [每日一问:非 Activity.startActivity() 不加 Flag 也可能不崩溃 - 掘金](https://juejin.cn/post/6844903890148655117)

- [非Activity环境startActivity的正确姿势_从非activity拉起activity-CSDN博客](https://blog.csdn.net/ausboyue/article/details/90648170)

0

评论区