8

私は数か月間アプリケーションを開発しており、リリースの準備をしています。プロセス全体のテストに Android 4.0.4 を搭載した Motorola Xoom を使用してきましたが、すべて問題なく動作しました。Google から Nexus 7 (Jelly Bean 4.1 を実行) を購入しましたが、デバイスがスリープまたはオフになると、アクティビティのライフ サイクルでさまざまな問題が発生します。

ライフサイクルを確認するためだけに新しいプロジェクトを作成しました。これが私が思いついた結果です。次のコードは、各ライフ サイクル メソッドで実行したことのサンプルです。

@Override
protected void onPause() {
    Log.i("TEST", "onPause()");
    super.onPause();
}

Xoom の結果 (期待される結果)

---------- Program Launch -------------
onCreate(null)
onStart()
onResume()
---------- Turn Off Screen ------------
onPause()
onSaveInstanceState(not null)
onStop()
---------- Turn Screen On -------------
onReStart()
onRestoreInstanceState(not null)
onResume()

Nexus 7 の結果 (予期しない結果)

---------- Program Launch -------------
onCreate(null)
onStart()
onResume()
---------- Turn Off Screen ------------
onPause()
onSaveInstanceState(not null)
onStop()
onDestroy()
onCreate(not null)
onStart()
onRestoreInstanceState(not null)
onResume()
onPause()
---------- Turn Screen On -------------
OnResume()
onPause()
onSaveInstanceState(not null)
onStop()
onDestroy()
onCreate(not null)
onStart()
onRestoreInstanceState(not null)
onResume()

繰り返しますが、これらの結果は、各メソッドの Log ステートメント以外にコードを変更していない、まったく新しいプロジェクトからのものです。Nexus 7 の電源をオフにしてから再びオンにすると、不要なメソッド呼び出しが大量に追加されるのはなぜですか? アプリケーションを完全に破壊してから再作成しているようです。

完全を期すために、ホーム ボタンを使用してからアプリケーションを再起動すると、ライフ サイクルはデバイス間で一貫しているように見えます。

助けてくれてありがとう。ウェイン

4

2 に答える 2

6

Jelly Bean 4.1 - Nexus 7 には、このパスに 1 つのオプションがあります。

設定 -> 開発者向けオプション -> アクティビティを保持しない...

このオプションは、バックグラウンドに移動するすべてのアクティビティを強制終了します。したがって、Android がステータスを「スリープ中」および「ウェイクアップ」に変更すると、アクティビティが破棄されて再作成されます。

于 2012-09-18T09:47:24.387 に答える
4

問題のシナリオでアクティビティが再作成されたようです。これは通常、システムで構成の変更が発生したときに発生します。構成の変更を自分で明示的に処理することを明示的に決定しない限り、アクティビティはデフォルトで再作成され、再起動されます。このリストを確認する必要があります。画面のオン/オフを切り替えると、これらの変更の1つが発生する可能性があります(同時にデバイスを回転させないでください)。

構成変更については、こちらの公式ページをご覧ください。

于 2012-07-26T20:02:31.050 に答える