如何确保MainActivity仅创建一次

时间:2020-08-14 12:14:58

标签: android react-native android-activity launchmode

我有一个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仅创建一次?

谢谢。

2 个答案:

答案 0 :(得分:1)

刚发现问题。我在i上的方法断点起作用了。

第三方sdk无法找到属性接收者,因此它发送带有意图标志FLAG_ACTIVITY_NEW_TASK的startActivity调用| FLAG_ACTIVITY_CLEAR_TASK,它覆盖了我在startActivity中的singleTask

答案 1 :(得分:0)

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

我刚刚测试过,只要将singleTask或singleTop作为启动模式,OnCreate就不会被调用两次。如您所见:https://developer.android.com/guide/components/activities/tasks-and-back-stack

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

希望对您有帮助,祝您好运