>  > ティーダ フロアマットカーマット 高級タイプ ブラック ベージュ内装品 カー用品 車用 専用設計 ピッタリ フロアマット 純正風 絨毯 ラグマット ラグジュアリー ふわふわ

【 バージョンアップしました!】


GooglePlayへGO!


2018/01/18

ティーダ フロアマットカーマット 高級タイプ ブラック ベージュ内装品 カー用品 車用 専用設計 ピッタリ フロアマット 純正風 絨毯 ラグマット ラグジュアリー ふわふわ

Activityは一度破棄されて再作成されるというプロセスを辿ることが意外とあります。

例えば端末を傾けた時、縦画面だった Activity は破棄されて横画面用の Activity が再作成されたり。

他にも、他のアプリを起動してバックグラウンドに行ったときメモリの状況によっては Activity が破棄される事があります。

 

Activityは破棄され再作成されるものと思ってコーディングする必要があります。

ティーダ フロアマットカーマット 高級タイプ ブラック アクレ ベージュ内装品 カー用品 車用 専用設計 ピッタリ フロアマット 純正風 絨毯 ラグマット ラグジュアリー アクア ふわふわ

画面を回転させたり、言語設定を変えたり、メモリの空き状況など OS の都合によって Activity は破棄されて再作成されます EXCLUSIVE ZEUS ソリオ MA15S 前期 GRACE LINE Front Half Spoiler 素地 塗装済み。

(ライフサイクルに従って onDestroy() まで走って破棄され、新たな Activity が onCreate() から始まります)

 

OS の都合で再作成されたとしても、アプリとしてはさっきの続きとして動作させなければなりません。

作業中の内容を一時的に保存し、再作成後の Activity で正しく復元してあげる必要があります EXCLUSIVE ZEUS ワゴンR スティングレー MH34S GRACE LINE Front Half Spoiler 素地 塗装済み。

Viewは勝手にやってくれている

「作業内容の保存と復元なんてやってないけどちゃんと動いてるよ?」と思うかもしれません。

例えば EditText で入力中の文字など、画面を回転させた後も同じ状態になっています。

 

これはViewクラスが破棄時の保存と再作成後の復元をやってくれているからです K&H ケイアンドエイチ シート本体 ダブルシート プレーン <セミオーダー> カラー:バーガンディー カラー:プレーンブラック ダイナ [DYNA] 04-05。

つまり、View以外のデータは自分で保存・復元を行わなければいけません。

メンバ変数の保存・復元を実装しよう

自分で保存・復元を実装しなければならない物といえば Activity のメンバ変数です。

アプリ操作の過程でメンバ変数の値が変わる場合には、再作成後のActivityへ正しく引き継がなくてはいけません 【送料無料】ショウエイ(SHOEI) ジェット J-FORCE4 BRILLER TC-1 RD/WH(レッド/ホワイト) Lサイズ_okrjs。

 

値の引き継ぎは Bundleクラスを使って行われます。

Activity が破棄される直前に onSaveInstanceState メソッドが呼び出されるので、そこで Bundle オブジェクトへ値を保存します。この Bundle オブジェクトは再作成後の Activity の onCreate メソッドもしくは onRestoreInstanceState メソッドへ渡されます。

純正風 車用 ブラック ラグジュアリー 絨毯 ラグジュアリー ベージュ内装品 ブラック ピッタリ ティーダ フロアマット 専用設計 ラグマット ふわふわ フロアマットカーマット カー用品 高級タイプ

public class LoginActivity extends Activity {
 private boolean mTest = true;
 private int mNum = 0;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_test);
 if (null != savedInstanceState) {
 mTest = savedInstanceState.getBoolean("Test");
 mNum = savedInstanceState.getInt("Num");
 }
 }
 @Override
 protected void onSaveInstanceState(Bundle savedInstanceState) {
 super.onSaveInstanceState(savedInstanceState);
 savedInstanceState.putBoolean("Test", mTest);
 savedInstanceState.putBoolean("Num", mNum);
 }
}

onSaveInstanceStateメソッドでメンバ変数をキーと結び付けて保存しています COLIN(コーリン)シートカバー ブラック トヨタ ハイエース KDH200 / KDH201 / KDH205 / KDH206 / KDH211 / KDH216 / TRH200 / TRH211 / TRH216 。

onCreateメソッドではキーを使って値を取り出しメンバ変数を復元しています。

ティーダ フロアマットカーマット 高級タイプ ブラック ベージュ内装品 カー用品 車用 専用設計 ピッタリ フロアマット 純正風 絨毯 ラグマット ラグジュアリー ふわふわ【激安大特価】

メンバ変数がクラスの場合はSerializableにすると楽

保存したメンバ変数が int や String などならいいですのですが、時には自分で作ったクラスな時もあると思います。そんな時はクラスを Serializable にしておくと保存・復元が楽になります。

public class UserInfo implements Serializable {
 public String mID;
 public String mName;
 public int mStatus;
}
public class LoginActivity extends Activity {
 private UserInfo mUser;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_test);
 if (null != savedInstanceState) {
 mUser = savedInstanceState.getSerializable("User");
 }
 }
 @Override
 protected void onSaveInstanceState(Bundle savedInstanceState) {
 super.onSaveInstanceState(savedInstanceState);
 savedInstanceState.putSerializable("User", mUser);
 }
}
tagPlaceholderカテゴリ: Android