如何在Android上使用onPause?

时间:2011-02-05 16:43:04

标签: android

使用onSaveInstanceState(Bundle ..) and onRestoreInstanceState(Bundle ..)
非常好并且工作正常,但是当点击模拟器上的关闭按钮时它正在工作 现在,我想保存状态并在使用下方按钮时恢复保存的数据:
Emulator

我认为可以使用OnPause()或oOnStop(),如果我是对的,如何使用它,
它将足以向我展示保存一个布尔变量的Java源代码,并将其恢复 感谢。

6 个答案:

答案 0 :(得分:13)

我会使用onPause(),因为onStop()无法保证被调用。有关生命周期的详细信息,请参阅application fundamentals

要保存并恢复布尔值,我会使用SharedPreferencesdata 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()。