我有一个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仅创建一次?
谢谢。
答案 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
希望对您有帮助,祝您好运