41

Androidのドキュメントは次のように述べています:

「ユーザーではなくシステムがメモリを節約するためにアクティビティをシャットダウンすると、...」

しかし、この状況をシミュレートする方法は?メソッドをデバッグしたいのですが、onRestoreInstanceState(Bundle)方法がわかりません。

4

8 に答える 8

35

完全に非決定論的であるため、自動化された方法でそれを行うことはできません。

詳細については、 https://stackoverflow.com/a/15048112/909956で私の答えを参照してください。

ただし、良いニュースは、onSaveInstanceStateの呼び出しをシミュレートするだけで、このメモリ不足の状況を間接的にテストしていることです。

onSaveInstanceStateは、次の方法でトリガーできます。

  1. フォーカスを失う(本質的にはアプリからランチャーアプリに切り替えるようなホームを押す)、別のアクティビティを起動する、最近を押す
  2. 向きを変える。エミュレータを使用している場合、これはより簡単な方法です
  3. 開発者設定の変更:[開発者向けオプション]->[アプリ]->[アクティビティを保持しない]に移動します。これは、実際のデバイスで一時的にテストする場合に最適なオプションです。
于 2013-02-24T02:49:28.030 に答える
13

Android の強制終了プロセスをシミュレートするには、開発者設定で「アクティビティを保持しない」設定を使用するか、自分でアプリ プロセスを強制終了する 2 つの方法があります。

プロセスを強制終了するには、テストするアクティビティを開き、ホーム ボタンを押してアプリをバックグラウンドに送り、Android Studio (Android デバイス モニター) のDDMSを使用してプロセスを選択し、プロセスを停止します (図のように)。下の画像で)。あなたのアプリは強制終了されました。次に、アプリをもう一度開きます (開いているアプリのリストにアクセスします)。これで、killed 状態をテストできます。

ここに画像の説明を入力

于 2016-06-22T20:52:31.837 に答える
10

デバッグの目的でonRestoreInstanceState()、画面の向きを変更するだけです (エミュレーターでは [Ctrl]-[F11])。アクティビティが破棄されて再作成され、onSaveInstanceState()/onRestoreInstanceState()ペアが呼び出されます。

于 2010-03-01T14:10:20.897 に答える
4

SetAlwaysFinishアプリ(実際のデバイスとエミュレーターで動作)を使用するか、Google DevToolsアプリ(エミュレーターでのみ動作)を使用します。

これらのアプリは、ActivityManagerNativeクラスの非表示のAlwaysFinish設定を使用して、OSの動作を変更し、フォアグラウンドでなくなるとすぐにすべてのアクティビティを即座にアンロードします。これにより、onSaveInstanceStateイベントとonRestoreInstanceStateイベントが確実にトリガーされます。

詳細については、以下のリンクを参照してください:http: //bricolsoftconsulting.com/how-to-test-onsaveinstancestate-and-onrestoreinstancestate-on-a-real-device/

于 2011-12-23T22:58:44.600 に答える