我有两项活动Activity1
和Activity2
。 Activity1
是启动器活动,从一开始就开始。现在当我从activity2
按下主页按钮并再次从所有应用程序打开应用程序时,Activity1
正在打开。我想打开按下主页按钮时打开的相同活动。我需要保存activity2
的状态,但我怎么也没有任何线索。
答案 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没有标记,只是清单中存在的声明。