使用onSaveInstanceState(Bundle ..) and onRestoreInstanceState(Bundle ..)
非常好并且工作正常,但是当点击模拟器上的关闭按钮时它正在工作
现在,我想保存状态并在使用下方按钮时恢复保存的数据:
我认为可以使用OnPause()或oOnStop(),如果我是对的,如何使用它,
它将足以向我展示保存一个布尔变量的Java源代码,并将其恢复
感谢。
答案 0 :(得分:13)
我会使用onPause()
,因为onStop()
无法保证被调用。有关生命周期的详细信息,请参阅application fundamentals。
要保存并恢复布尔值,我会使用SharedPreferences
。 data storage page上有一个代码示例,展示了如何保存和恢复布尔值。他们使用onCreate()
和onStop()
,但我会使用onResume()
和onPause()
,原因我已经提到过了。
答案 1 :(得分:13)
使用sharedPreferences
存储时,我在关机后阅读onPause
时遇到问题。解决方法是首先调用clear()
。
public static final String PREFS_NAME = "MyPrefsFile";
protected void onPause(){
super.onPause();
SharedPreferences settings = getSharedPreferences(PREFS_NAME,0);
SharedPreferences.Editor editor = settings.edit();
// Necessary to clear first if we save preferences onPause.
editor.clear();
editor.putInt("Metric", mMetric);
editor.commit();
}
答案 2 :(得分:5)
示例:
public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}
@Override
protected void onStop(){
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Commit the edits!
editor.commit();
}
}
答案 3 :(得分:2)
请参阅the Android SDK notepad tutorial part 3.中的步骤7和步骤8,以获取将状态保存到sqlite DB的示例(使用先前定义的db-helper类。)
答案 4 :(得分:0)
答案 5 :(得分:0)
你可以在你的活动中覆盖onPause(),当你导航到另一个活动时说activatA,说当你回到activityA时,调用activityB并覆盖onResume()。