1

我有两个活动,Activity1Activity2Activity1是从头开始的启动器活动。现在,当我activity2从所有应用程序中按下主页按钮并再次打开应用程序时,Activity1它正在打开。我想打开在按下主页按钮时打开的同一个活动。我需要保存状态activity2,但我没有任何线索。

我看了这个这个,但我仍然没有清楚地了解如何做到这一点。请帮助我,因为我是 android 新手。

4

2 回答 2

4

当您按下“主页”按钮时,您的活动将转到onPause()

所以我个人建议你重写onPause()不仅可以处理按下“主页”按钮而且还可以处理其他情况的方法。

在您的情况下,它只是相关的onPause()onResume()因此您可以尝试将状态放入SharedPreferences或内部/外部存储中。

说:

在您的onPause()方法中,执行以下操作:

// Use Shared Preferences to save data
SharedPreferences previewSizePref = getSharedPreferences("PREF",MODE_PRIVATE);
SharedPreferences.Editor prefEditor = previewSizePref.edit();
prefEditor.putInt("x", somethingA);
prefEditor.putInt("y", somethingB);
prefEditor.commit();

并在您的 中onResume(),检索保存的数据,例如:

SharedPreferences previewSizePref = getSharedPreferences("PREF",MODE_PRIVATE);
if (previewSizePref.contains("x") && previewSizePref.contains("y")) {
    //your saved data exists, do something
} else {
    // handle the circumstances that the saved data doesn't exist
}

要保存状态onPause()并恢复,onResume()您可以查看以下答案:

在 onPause 中保存 Activity 状态

对于 SharedPreferences,您可以查看 API 文档:Data Storage - Shared Preferences

于 2012-10-30T11:39:34.693 回答
0

您所描述的应该是 Android 行为的标准,如果它没有按照您所描述的那样做,那么您可能已经在其他地方覆盖了这种行为,可能在您的清单中。

如果您创建一个新的 Android 应用程序并制作一个简单的两页应用程序,其中 Activity A 作为启动器,Activity B 作为第二页,那么您的清单将如下所示,并且应用程序将显示您描述的行为。

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".ActivityA"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".ActivityB"
        android:label="@string/title_activity_main" >
    </activity>
</application>

仔细检查您的清单是否与此相似 - 活动 B 没有标志,只是声明它存在于您的清单中。

于 2012-10-30T11:48:08.230 回答