如何确保MainActivity仅创建一次

问题描述

我有一个React Native项目。并在后台运行服务。 当应用程序未运行时,该服务仍处于活动状态,并且它可能希望在一段时间后启动MainActivity。我正在使用以下代码启动MainActivity(我尝试过noFlag / addFlag / setFlag):

@H_502_2@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的声明如下:

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

每次MainActivity都会创建两次。第一次可以获得额外的价值,但是第二次它将为空。

如何确保MainActivity仅创建一次?

谢谢。

解决方法

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

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

,

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

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

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

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