有关 Activity 启动模式的当前问题,请参阅更新 2

我正在开发一个 Android 应用程序。现在我遇到的问题是,一旦我打开一个新活动(这不是带有 android.intent.action.MAINandroid.intent.category.LAUNCHER)在应用程序中,然后按主页按钮,然后按应用程序图标,应用程序不会将我导航回我已经打开的新活动(并显示在最近的应用程序列表中)。相反,它会打开一个新的 MAIN 活动。

我应该做什么来改变这种行为?

===================================================

更新

从主活动启动其他活动的代码

    startActivity(new Intent(MainActivity.this, LocalActivity.class));

AndroidManifest.xml

    <activity
        android:name=".MainActivity"
        android:theme="@style/AppDrawTheme"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".LocalActivity"
        android:launchMode="singleInstance"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:screenOrientation="portrait">
    </activity>

===================================================

更新2

我通过改变来解决问题android:launchMode="singleInstance"android:launchMode="singleTask"

虽然我不明白为什么 singleInstance 会是一个问题。我应该如何理解Google在Android文档上写的内容 “除了系统不会在持有实例的任务中启动任何其他活动” ?

有帮助吗?

解决方案

最有可能的是你正在设置 Intent 当您调用时导致此情况的标志 startActivity() 或者您使用活动的属性 AndroidManifest.xml 导致这个的。我需要查看您的清单或代码以准确指出问题所在。

更新

谷歌文档还说:

该活动始终是其任务的唯一成员。

你应该经历 这一页 并仔细阅读任务和活动。

基本上,当您开始主要活动时,它是在新任务中创建的。接下来的活动被放置在同一个任务中(在堆栈中)。现在,最关键的部分是,Android 不仅仅恢复单个 Activity,而是恢复整个任务。这是默认的。

如果您使用 singleInstance 每个 Activity 都有自己的任务,当您再次启动应用程序时(在 HOME 按钮之后),Android 使用根 Activity 恢复任务,而不是您上次看到的 Activity 的任务。当你改变launchMode时要非常小心,如果不清楚它是如何工作的,那么你可能应该先弄清楚它,否则你将来可能会有更多的惊喜。

我希望您现在已经清楚了,如果还不清楚,请阅读 链接的 文档。

其他提示

你应该使用 onPause()onResume() 在你的活动中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top