打开Android App按钮不会返回当前已打开的Activity

时间:2014-07-30 14:40:43

标签: java android android-intent android-activity activity-lifecycle

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

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

我该怎么做才能改变这种行为?

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

更新

其他主要活动的开始活动代码

    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文档上写的内容“,除非系统没有在持有实例的任务中启动任何其他活动”

2 个答案:

答案 0 :(得分:1)

您调用Intent或在startActivity()中使用导致此问题的活动属性时,很可能会设置导致此问题的AndroidManifest.xml个标记。我需要查看您的清单或代码,以指出问题的确切位置。

<强>更新

Google文档也说:

  

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

您应该通过this page并仔细阅读有关任务和活动的信息。

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

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

我希望现在很清楚,如果没有,请阅读linked文档。

答案 1 :(得分:0)

您应该在活动中使用onPause()onResume()