同一个app的任务管理器中的两个活动

时间:2016-11-19 09:01:05

标签: android android-activity back-stack

我的应用有两项活动,比如MainActivitySecondActivity。主要活动声明为android:launchMode="singleInstance",其方向始终为portrait。第二项活动始终具有landscape方向。

在某些设备中,一切正常,在任务管理器中,我的应用程序只有一个实例,但在某些设备(如Samsung S7)中,当我启动SecondActivity时,我的应用程序将有两个实例在这个图像的任务管理器中:

enter image description here

我的猜测是launchMode的{​​{1}}出了问题,但我需要它MainActivty。有什么建议吗?

修改

清单中的MainActivity:

singleInstance

和第二:

<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);

1 个答案:

答案 0 :(得分:4)

所以,在阅读@sharan评论和一些谷歌搜索后,它让我读了一些谷歌文件。根据文档,android:launchMode=singleInstanceandroid:launchMode=singleTask之间没有任何区别,只有一个。它们都会使您的活动singleton,因此您将永远不会有两个实例。它们之间的唯一区别是singleInstance将阻止任务附加任何其他活动,而singleTask没有此限制。关于它们的任何其他事情都是一样的。

因此,对于正在阅读此帖的任何人,我建议您永远不要使用singleInstance启动模式,除非您完全需要它。因为如果您的应用中只有一项活动,则singleInstancesingleTask之间不会有任何差异。如果您有多个活动,那么我建议您将所有活动都归属于一项任务。

简而言之,将singleInstance更改为singleTask即可。