同一应用程序任务管理器中的两个活动
Two activities in task manager of same app
我的应用程序有两个活动,例如 MainActivity
和 SecondActivity
。 Main activity 声明为 android:launchMode="singleInstance"
,其方向始终为 portrait
。第二个 activity 始终具有 landscape
方向。
在某些设备中,一切正常,在任务管理器中只有一个我的应用程序实例,但在某些设备(如三星 S7)中,当我启动 SecondActivity
时,会有两个实例我在任务管理器中的应用程序如下图所示:
我的猜测是 MainActivty
的 launchMode
有问题,但我需要它是 singleInstance
。有什么建议吗?
编辑:
清单中的 MainActivity:
<activity
android:name=".Activities.MainActivity"
android:screenOrientation="portrait"
android:launchMode="singleInstance"
android:theme="@style/AppTheme"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
第二个:
<activity
android:name=".Activities.SecondActivity"
android:screenOrientation="landscape" />
启动代码:
Intent intent = new Intent(getActivity(),
intent.putExtra("VideoUri", filmGet.getOutput().getData().getFilmTrailer());
startActivity(intent);
如果有帮助,我会从片段中启动 SecondActivity
。
因此,在阅读了@sharan 的评论并进行了一些谷歌搜索之后,它促使我阅读了一些 google 文档。根据文档, android:launchMode=singleInstance
和 android:launchMode=singleTask
之间没有任何区别,只有一个。它们都使你的 activity singleton
所以你永远不会有它的两个实例。它们之间的唯一区别是 singleInstance
将阻止任务附加任何其他 activity 而 singleTask
没有此限制。关于他们的任何其他事情都是一样的。
因此,对于正在阅读本文的任何人 post,我建议您永远不要使用 singleInstance
启动模式,除非您确实需要它具有的功能。因为如果你的app里只有一个activity,那么singleInstance
和singleTask
就没有区别了。如果您有多个 activity,那么我会建议您将所有活动都归为一项任务。
简而言之,将 singleInstance
更改为 singleTask
即可。
我的应用程序有两个活动,例如 MainActivity
和 SecondActivity
。 Main activity 声明为 android:launchMode="singleInstance"
,其方向始终为 portrait
。第二个 activity 始终具有 landscape
方向。
在某些设备中,一切正常,在任务管理器中只有一个我的应用程序实例,但在某些设备(如三星 S7)中,当我启动 SecondActivity
时,会有两个实例我在任务管理器中的应用程序如下图所示:
我的猜测是 MainActivty
的 launchMode
有问题,但我需要它是 singleInstance
。有什么建议吗?
编辑:
清单中的 MainActivity:
<activity
android:name=".Activities.MainActivity"
android:screenOrientation="portrait"
android:launchMode="singleInstance"
android:theme="@style/AppTheme"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
第二个:
<activity
android:name=".Activities.SecondActivity"
android:screenOrientation="landscape" />
启动代码:
Intent intent = new Intent(getActivity(),
intent.putExtra("VideoUri", filmGet.getOutput().getData().getFilmTrailer());
startActivity(intent);
如果有帮助,我会从片段中启动 SecondActivity
。
因此,在阅读了@sharan 的评论并进行了一些谷歌搜索之后,它促使我阅读了一些 google 文档。根据文档, android:launchMode=singleInstance
和 android:launchMode=singleTask
之间没有任何区别,只有一个。它们都使你的 activity singleton
所以你永远不会有它的两个实例。它们之间的唯一区别是 singleInstance
将阻止任务附加任何其他 activity 而 singleTask
没有此限制。关于他们的任何其他事情都是一样的。
因此,对于正在阅读本文的任何人 post,我建议您永远不要使用 singleInstance
启动模式,除非您确实需要它具有的功能。因为如果你的app里只有一个activity,那么singleInstance
和singleTask
就没有区别了。如果您有多个 activity,那么我会建议您将所有活动都归为一项任务。
简而言之,将 singleInstance
更改为 singleTask
即可。