Androidのドキュメントは次のように述べています:
「ユーザーではなくシステムがメモリを節約するためにアクティビティをシャットダウンすると、...」
しかし、この状況をシミュレートする方法は?メソッドをデバッグしたいのですが、onRestoreInstanceState(Bundle)
方法がわかりません。
Androidのドキュメントは次のように述べています:
「ユーザーではなくシステムがメモリを節約するためにアクティビティをシャットダウンすると、...」
しかし、この状況をシミュレートする方法は?メソッドをデバッグしたいのですが、onRestoreInstanceState(Bundle)
方法がわかりません。
完全に非決定論的であるため、自動化された方法でそれを行うことはできません。
詳細については、 https://stackoverflow.com/a/15048112/909956で私の答えを参照してください。
ただし、良いニュースは、onSaveInstanceStateの呼び出しをシミュレートするだけで、このメモリ不足の状況を間接的にテストしていることです。
onSaveInstanceStateは、次の方法でトリガーできます。
Android の強制終了プロセスをシミュレートするには、開発者設定で「アクティビティを保持しない」設定を使用するか、自分でアプリ プロセスを強制終了する 2 つの方法があります。
プロセスを強制終了するには、テストするアクティビティを開き、ホーム ボタンを押してアプリをバックグラウンドに送り、Android Studio (Android デバイス モニター) のDDMSを使用してプロセスを選択し、プロセスを停止します (図のように)。下の画像で)。あなたのアプリは強制終了されました。次に、アプリをもう一度開きます (開いているアプリのリストにアクセスします)。これで、killed 状態をテストできます。
デバッグの目的でonRestoreInstanceState()
、画面の向きを変更するだけです (エミュレーターでは [Ctrl]-[F11])。アクティビティが破棄されて再作成され、onSaveInstanceState()
/onRestoreInstanceState()
ペアが呼び出されます。
SetAlwaysFinishアプリ(実際のデバイスとエミュレーターで動作)を使用するか、Google DevToolsアプリ(エミュレーターでのみ動作)を使用します。
これらのアプリは、ActivityManagerNativeクラスの非表示のAlwaysFinish設定を使用して、OSの動作を変更し、フォアグラウンドでなくなるとすぐにすべてのアクティビティを即座にアンロードします。これにより、onSaveInstanceStateイベントとonRestoreInstanceStateイベントが確実にトリガーされます。
詳細については、以下のリンクを参照してください:http: //bricolsoftconsulting.com/how-to-test-onsaveinstancestate-and-onrestoreinstancestate-on-a-real-device/