按home键后保存Activity的状态

时间:2012-10-30 11:36:11

标签: android state

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

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

2 个答案:

答案 0 :(得分: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()中恢复,您可以查看以下答案:

Saving Activity State in the onPause

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

答案 1 :(得分:0)

您所描述的内容应该是Android行为的标准,如果它没有按照您的描述进行操作,那么您可能已经在其他地方覆盖了此行为,可能在您的清单中。

如果您创建一个新的Android应用程序并制作一个简单的两页应用程序,其中活动A作为启动器,活动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没有标记,只是清单中存在的声明。