同一应用程序的任务管理器中的两项活动

A. *_*han 2 android android-activity back-stack

我的应用程序有两个活动,说MainActivitySecondActivity。主要活动被声明为,android:launchMode="singleInstance"并且其方向始终为portrait。第二项活动总是有landscape方向的。

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

在此处输入图片说明

我的猜测是,什么是错用launchModeMainActivty,但我需要它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>
Run Code Online (Sandbox Code Playgroud)

第二:

<activity
    android:name=".Activities.SecondActivity"
    android:screenOrientation="landscape" />
Run Code Online (Sandbox Code Playgroud)

启动代码:

Intent intent = new Intent(getActivity(),  
intent.putExtra("VideoUri", filmGet.getOutput().getData().getFilmTrailer());
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

如果有帮助,我SecondActivity将从片段开始。

A. *_*han 5

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

因此,对于正在阅读本文的任何人,我建议您不要使用singleInstance启动模式,除非您确实需要它。因为如果您的应用程序中只有一项活动,则singleInstance和之间不会有任何区别singleTask。如果您有多个活动,那么我建议您所有活动都属于一项任务。

总之,改变singleInstancesingleTask和你去。