Android onSaveInstanceStateリアルタイム保存データ——侮れない
3095 ワード
データの保存、きっとみんなはすべてよく知らないで、今日何気なく1篇の博文を見て、ActivityのonSaveInstanceState方法に対して1つの新しい認識があって、特にここで記録して、後で調べるためです.
携帯電話のメモリが使えば使うほど小さくなり、メモリが足りないときにアプリの中でスタックの上にないactivityを回収する可能性が高いことはよく知られています.開発中、このような問題に遭遇したことがありますか?Aを開きました.Aは登録クラスactivityです.それからあなたはたくさんの情報を記入した後、デスクトップに戻ってメールを見たり、電話に出たりして、あなたがこれを開けたとき、中に記入したものがなくなったことに気づきました.この時、この開発者を拍手して死にたいですか?
どうしようかな?onSaveInstancesStateの使用を理解して、あなたのために便利に解決することができて、くだらない話は多く言わないで、以下の紹介を見てください:
onsaveinstancestate()コールバックメソッドは、activityが回収される前に必ず呼び出されることを保証します.
一、保存したいデータを保存する
二、欲しいデータは保存されていますが、どうやって復元しますか?oncreate()メソッドでこのデータを復元します.保存用はbundleなので、取り出した操作はもうわかっているでしょう.
開発中のテンプレートコード:
三、まとめ
savedInstanceStateパラメータが空かどうかによって、空であれば保存操作をしていないことを説明し、空でなければ保存したデータを取り出します.また、この方法ではオブジェクトを保存することもできます.
携帯電話のメモリが使えば使うほど小さくなり、メモリが足りないときにアプリの中でスタックの上にないactivityを回収する可能性が高いことはよく知られています.開発中、このような問題に遭遇したことがありますか?Aを開きました.Aは登録クラスactivityです.それからあなたはたくさんの情報を記入した後、デスクトップに戻ってメールを見たり、電話に出たりして、あなたがこれを開けたとき、中に記入したものがなくなったことに気づきました.この時、この開発者を拍手して死にたいですか?
どうしようかな?onSaveInstancesStateの使用を理解して、あなたのために便利に解決することができて、くだらない話は多く言わないで、以下の紹介を見てください:
onsaveinstancestate()コールバックメソッドは、activityが回収される前に必ず呼び出されることを保証します.
一、保存したいデータを保存する
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
String string = "activity ?";
outState.putString("Activity", string);
}
二、欲しいデータは保存されていますが、どうやって復元しますか?oncreate()メソッドでこのデータを復元します.保存用はbundleなので、取り出した操作はもうわかっているでしょう.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
String oldString = savedInstanceState.getString("Activity");
}
}
開発中のテンプレートコード:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(KEY_BOTTOM_NAVIGATION_VIEW_SELECTED_ID, bottomNavigationView.getSelectedItemId());
FragmentManager fragmentManager = getSupportFragmentManager();
if (timelineFragment.isAdded()) {
fragmentManager.putFragment(outState, TimelineFragment.class.getSimpleName(), timelineFragment);
}
if (categoriesFragment.isAdded()) {
fragmentManager.putFragment(outState, CategoriesFragment.class.getSimpleName(), categoriesFragment);
}
if (aboutFragment.isAdded()) {
fragmentManager.putFragment(outState, AboutFragment.class.getSimpleName(), aboutFragment);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
initFragments(savedInstanceState);
if (savedInstanceState != null) {
int selectId = savedInstanceState.getInt(KEY_BOTTOM_NAVIGATION_VIEW_SELECTED_ID);
switch (selectId) {
case R.id.nav_timeline:
showFragment(timelineFragment);
break;
case R.id.nav_categories:
showFragment(categoriesFragment);
break;
case R.id.nav_about:
showFragment(aboutFragment);
default:
break;
}
} else {
showFragment(timelineFragment);
}
}
三、まとめ
savedInstanceStateパラメータが空かどうかによって、空であれば保存操作をしていないことを説明し、空でなければ保存したデータを取り出します.また、この方法ではオブジェクトを保存することもできます.