如何确保 MainActivity 只创建一次

How to make sure the MainActivity will be created only once

我有一个 React Native 项目。并且后台有一个服务运行。 当应用不是 运行 时,服务仍然存在,它可能需要在某个时间启动 MainActivity。我正在使用以下代码启动 MainActivity(我试过 noFlag/addFlag/setFlag):

Intent Intent = new Intent(context, MainActivity.class);
// intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
// intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(key, value);
context.startActivity(intent);

AndroidManifest.xml 声明如下:

<activity
    android:name=".MainActivity"
    android:launchMode="singleTask”>
</activity>

每次MainActivity都会被创建两次。第一次可以拿到额外的值,第二次就空了

如何确保 MainActivity 只创建一次?

谢谢。

您很可能已经知道,问题在于您调用了两次 startActivity。我认为如果您能展示调用 startActivity 的代码就太好了。

我刚刚测试过,只要你的启动模式是singleTask或singleTop,OnCreate就不会被调用两次。你可以从这里读到:https://developer.android.com/guide/components/activities/tasks-and-back-stack

调用的函数是onNewintent,如果putExtra为空,确实可以创建NPE

希望对你有所帮助,祝你好运

刚发现问题。我在 startActivity 上的方法断点有效。

第三方 sdk 找不到 属性 接收者,所以它发送一个 startActivity 带有意图标志 FLAG_ACTIVITY_NEW_TASK 的调用 | FLAG_ACTIVITY_CLEAR_TASK,它覆盖了我在 AndroidManefest.xml 中的 singleTask