Activityの状態を保存する方法

2289 ワード

imhet stackoverflowから訳す
問題の説明
Androidを使用して開発する過程で、次のコードのようなアプリケーションの状態をどのように保存するかに迷っています.
package com.android.hello;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mTextView = new TextView(this);

        if (savedInstanceState == null) {
            mTextView.setText("Welcome to HelloAndroid!");
        } else {
            mTextView.setText("Welcome back.");
        }

        setContentView(mTextView);
    }

    private TextView mTextView = null;
}

この例は簡単だと思いますが、私がどのようにこのアプリケーションを終了しても、それが私に与えた最初の情報です.onPauseのような方法を書き直す必要があるに違いありませんが、公式ドキュメントでは長い間明らかな答えが見つかりませんでした.あなたたちの助けを期待して、感謝しています.
高票の答えonSaveInstanceState(Bundle savedInstanceState)を書き換える必要があります.アプリケーションに関連するステータス値をBundleに書き込む必要があります.
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
  super.onSaveInstanceState(savedInstanceState);

  //    UI       savedInstanceState    
  //           bundle      onCreate    
  savedInstanceState.putBoolean("MyBoolean", true);
  savedInstanceState.putDouble("myDouble", 1.9);
  savedInstanceState.putInt("MyInt", 1);
  savedInstanceState.putString("MyString", "Welcome back to Android");
  //   
}


Bundleはキー値ペアを格納する重要な方法であり、onCreate()onRestoreInstanceState()に渡されます.この2つの方法では、前に格納された値を次のコードのように取り出すことができます.

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);

  //    savedInstanceState    UI    
  //   bundle          onCreate    
  boolean myBoolean = savedInstanceState.getBoolean("MyBoolean");
  double myDouble = savedInstanceState.getDouble("myDouble");
  int myInt = savedInstanceState.getInt("MyInt");
  String myString = savedInstanceState.getString("MyString");
}


通常、このテクノロジーを使用して、アプリケーション内のインスタンス値(選択された情報、保存されていないテキストなど)を格納します.詳細については、公式ドキュメントを参照してください.