Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何确保仅创建一次MainActivity_Android_React Native_Android Activity_Launchmode - Fatal编程技术网

Android 如何确保仅创建一次MainActivity

Android 如何确保仅创建一次MainActivity,android,react-native,android-activity,launchmode,Android,React Native,Android Activity,Launchmode,我有一个项目。还有一个服务在后台运行。 当应用程序未运行时,服务仍处于活动状态,可能需要在一段时间后启动MainActivity。我正在使用以下代码启动MainActivity(我尝试了noFlag/addFlag/setFlag): AndroidManifest.xml声明如下: <activity android:name=".MainActivity" android:launchMode="singleTask”> </a

我有一个项目。还有一个服务在后台运行。 当应用程序未运行时,服务仍处于活动状态,可能需要在一段时间后启动MainActivity。我正在使用以下代码启动MainActivity(我尝试了noFlag/addFlag/setFlag):

AndroidManifest.xml
声明如下:

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

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

我刚刚测试过,只要您的启动模式是singleTask或singleTop,OnCreate就不会被调用两次。你可以从这里读到:

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


我希望这对您有所帮助,祝您好运

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


第三方sdk找不到属性接收者,因此它发送了一个
startActivity
调用,其中包含意图标志flag\u ACTIVITY\u NEW\u TASK | flag\u ACTIVITY\u CLEAR\u TASK,它覆盖了
AndroidManefest.xml中的我的
singleTask
,谢谢您的回复。该服务是由第三方供应商提供的推送服务。我还没有找到他们把
Startactivity
称为什么地方。。。但是由于我在清单文件中声明了singleTask,我希望它不会被创建两次。应该是在Create上只调用一次,其余的将只调用OnNewIntent。请问,你的onCreate打过两次电话吗?如果是这样的话,屏幕看起来是不是又被创建了?谢谢你的回复。希望对您有所帮助,我添加了登录onCreate和onNewIntent,我可以看到在调用onNewIntent后,onCreate再次被调用。。。同时,我在react native side中的组件通过componentWillUnmount方法运行。您如何第一次启动应用程序?如果你是第一次从安装程序或IDE(如Android Studio)启动应用程序,你可能会看到一个长期存在的讨厌的Android bug:如果应用程序已经运行,你希望发生什么?在我的例子中,每次推送都会创建两次活动。由于这是一个单任务活动,我希望它只调用
onNewIntent
,而不是创建新的活动请终止应用程序(使用设置->应用程序->你的应用程序->强制停止)。然后从主屏幕启动应用程序。然后看看你是否还看到这种行为。@DavidWasser完成。谢谢你的提醒。
<activity
    android:name=".MainActivity"
    android:launchMode="singleTask”>
</activity>