2011-08-28 11 views
4

私はAndroidが新しく、私はsavedInstanceStateとライフサイクルの管理にいくつか問題があります。savedInstanceStateは実際にいつ使用されますか?

http://developer.android.com/guide/topics/fundamentals/activities.html#Lifecycle 私はライフサイクルについての記事を読んでいますが、プロセスが強制終了されたときは本当にわかりません。私のniceInstanceSateが使用されます。私は "HOME"を押すことができますが、 "onPause"を起動してから "onResume"を起動します。

私は、メニュー - >設定 - >アプリケーション - >アプリケーション管理 - >アプリケーション名 - >強制停止を選択すると実行中のアプリケーションと見なされますが、再起動すると、最初の活動 "と呼ばれる。それはアプリケーションを閉じるのと同じように、私がよく理解すれば、私が望むように "プロセスを殺す"ではありません。だからここ

は私の質問は以下のとおりです。

1)どのように私は私のプロセスが殺されたことを確認することができます(再起動したときので、私のアプリはsavedIntanceStateを使用しますか)?

2)私のsavedInstanceStateが正しくプログラムされているかどうかをテストするために、プロセスを強制終了するにはどうすればよいですか?

3)「殺された」後、アプリが再起動され、「onCreate」が呼び出されたとき(savedInstanceState!= nullの場合)、私がコールしたときに与えたインテントの追加情報アクティビティ、またはインテントの情報が削除されましたか? 別の言い方をすれば、私は自分のsaveInstanceStateにIntent Extraに格納されているもののコピーを含める必要がありますか?私は十分に明確だ願ってい

;)

+0

kill を使用して、adbシェルでプロセスを終了できます。 –

答えて

1

1)あなたが心配する必要があるのは、あなたの活動のonSaveInstanceState()をオーバーライドしています。 Androidはあなたのプロセスを殺す前にそれを呼び出すでしょう。

2)Android test projectを設定する必要があります。次に、ActivityInstrumentationTestCase2を拡張するテストを作成し、 `getInstrumentation() 'を呼び出してInstrumentationオブジェクトを取得することができます。そこから、Instrumentation.callActivityOnCreateに電話して、テストに使用するBundleオブジェクトを渡すことができます。

3)私はあなたがsavedInstanceStateバンドルにエキストラを格納していることを確信しています。

+0

@CnuMarはこの回答を受け入れたはずです。 +1。 – ateiob

関連する問題