最も簡単な方法は、データを に保存しonPause()
、 に復元することですonResume()
。次の質問は、データをどこに保存するかです。それを行ういくつかの方法があります:
- カスタム アプリケーション コンテキストの使用
クラスを拡張android.app.Application
してマニフェスト ファイルに登録するには、次のようにします。
<application android:name="your.application.class" ...
これにより、`Context.getApplicationContext() を呼び出して、クラスのシングルトン インスタンスを取得できます。
作成できる例については、
public class MyContext extends Application {
Bundle mySavedData = null;
public void setSavedData(Bundle data){
mySavedData = data;
}
public Bundle getSavedData() {
return mySavedData;
}
}
そして、このように使用します
@overide
public void onResume(){
...
Bundle state = ((MyContext) getApplicationContext()).getSavedData();
if(state != null) {
/* restore states */
}
...
}
@overide
public void onPause(){
...
Bundle state = new Bundle();
...
/* save your data here and save it into the context or set null otherwise*/
((MyContext) getApplicationContext()).setSavedData(state);
...
}
- シングルトン パターンの使用
コンテキストを定義する代わりに、シングルトン インスタンスを作成できます
public class MySingleton {
static MySingleton instance;
public static MySingleton getInstance() {
if(instance == null){
instance = new MySingleton();
}
return instance;
}
public Bundle mySavedData = null;
void setSavedData(Bundle data){
mySavedData = data;
}
public Bundle getSavedData() {
return mySavedData;
}
}
そしてあなたはそれを使うことができます
@overide
public void onResume(){
...
Bundle state = MySingleton.getInstance().getSavedData();
if(state != null) {
/* restore states */
}
...
}
@overide
public void onPause(){
...
Bundle state = new Bundle();
...
/* save your data here and save it into the context or set null otherwise*/
MySingleton.getInstance().setSavedData(state);
...
}
アプリケーションが強制終了されると、コンテキストとシングルトンが破棄されることに注意してください。アプリケーションドキュメントフォルダーまたはデータベースを使用するよりもデータを永続的に保存したい場合は、お勧めしますが、それはあなたが探しているものではないと思います.
これがお役に立てば幸いです....