25

エミュレーターで自分のアプリをテストしたいと思いonSaveInstanceStateます。onRestoreInstanceState

これを見つけまし。これは、方向の変更中にこれをシミュレートできることを示していますが、変数の一部をアプリケーションレベル(サブクラスandroid.app.Application)に格納しているため、方向の変更によって変数が消去されることはありません。

だから私の質問は、どうすればメモリ不足の状況をシミュレートして、私の活動を殺すことができるのかということです。

私が自分自身を明確にしたことを願っています。ありがとう

4

7 に答える 7

24

アプリケーションを一時停止できます (ホームボタンを押す、通話をシミュレートするなど)。次に、adb を介してアプリのプロセスを強制終了します。ドキュメントには、 onPause() が返された後、それ以上の通知なしにアプリを強制終了できると書かれているため、これは公正なテストです。

アプリのプロセスの pid を見つける手間をかけたくない場合は、 を使用adb shell am kill com.example.package_nameしてアプリのプロセスを強制終了できます。アプリがバックグラウンドに置かれていることを確認してください。ドキュメントによると、このコマンドは「安全に終了でき、ユーザー エクスペリエンスに影響を与えないプロセスのみを終了します」。したがって、このアプリを試す前に、他のいくつかのアプリを起動することをお勧めします。

于 2011-03-13T04:02:43.240 に答える
15

onSaveInstanceState および onRestoreInstanceState イベントをテストするには、SetAlwaysFinish ユーティリティを使用できます (以下のリンクを参照)。Always Finish という非表示のシステム設定を使用して、Android システムの動作を変更します。Always Finish オプションを有効にすると、Android OS はフォアグラウンドからバックグラウンドに移動するすべてのアクティビティをすぐにアンロードし、その onSaveInstanceState イベントをトリガーします。次に、システムが再びアクティビティを必要とする場合、onRestoreInstanceState イベントをトリガーして強制的にリロードします。

プロセスを強制終了する場合と比較した場合のこの方法の利点は、簡単で、より細かい制御 (プロセス レベルではなくアクティビティ レベル) が得られることです。

ツールの詳細と使用方法については、以下のブログ投稿を参照してください

Always Finish 機能は、DevTools アプリのエミュレーターの [開発設定] > [すぐにアクティビティを破棄] にも存在します。ただし、DevTools アプリはエミュレーターの外では機能しません。

于 2011-12-23T22:42:38.373 に答える
15

Android 6 以降では、これに対するより確実な解決策があります。Android 6、7、および 8 で次の方法を正常に使用しました。

1) アプリを開き、復元をテストするアクティビティに移動し、[ホーム] ボタンを押して終了します

2) 設定アプリを開き、[システム] -> [開発者向けオプション] に移動し、[実行中のサービス] をタップします。

3) 右上の [Show Cached Processes] をタップし、リストでアプリを見つけてタップし、[Stop] ボタンをタップします。

4) 最近使ったアプリのリストを使用してアプリに戻ります。以前に終了したアクティビティでアプリ全体を再起動する必要があります。

アプリのデリゲートや C/C++ ネイティブ コードの状態を含め、アプリを完全に強制終了するにはこれで十分であることがわかりました。その後、保存されたアクティビティの状態で再起動をテストします。これにより、ユーザーが離れたときに何が起こるかが効果的に再現されます。しばらくアプリを停止すると、システムはそれを強制終了して、メモリやバッテリーなどを節約します。

于 2017-09-14T19:57:26.027 に答える
6

開発者設定で「アクティビティを保持しない」設定を使用するか、自分でアプリ プロセスを強制終了できます。

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

ここに画像の説明を入力

于 2016-06-22T20:56:55.330 に答える
0

android docから、http://developer.android.com/reference/android/content/ComponentCallbacks.html#onLowMemory()

これはシステムによってトリガーされます。Android仮想デバイスの作成中にデバイスのRAMサイズを小さく設定できると思います。(ハードウェアで、「デバイスのRAMサイズ」を選択します)

于 2011-03-13T03:55:41.183 に答える
0

私にとって最も簡単な解決策は、デバイスの向きを変更することです(AVD、Genymotion、またはその他のエミュレーターを使用していても、それを行うことができます)。デフォルトでは、システムは をActivity呼び出してから再作成しonDestoryますonCreate

AndroidManifest.xml で以下の属性が定義されActivity ていないことを確認します

android:configChanges="orientation"
于 2015-05-28T09:04:29.003 に答える