1

Androidアプリがハードエラー(具体的にはout_of_memory)でクラッシュしたときに、adbシェルを介して[強制終了]ダイアログを受け入れる方法(または可能かどうか)を理解しようとしています。基本的にbashスクリプトを使用してアプリをループさせたいので、クラッシュしたときにアプリの実行を再開したいと思います。ここで欠けているステップは、ダイアログの中央に表示される[強制終了]ボタンを押すことをシミュレートできないことです。

同時に、プロセスは実際には実行されていないようです(PIDを強制終了しようとしても機能しません)。そのため、プロセスはすでに停止しているように見えるため、少し奇妙な状況ですが、(adbを介して)再度起動します。 shell am ...)「現在のタスクが前面に出されました」と表示されます。

どんな考えでもいただければ幸いです!

4

2 に答える 2

6

UncaughtExceptionHandlerのDarkXphenomenonに+1 。

ただし、プロセスを強制終了するには、 amを使用する必要があります。

am force-stop: force stop everything associated with <PACKAGE>.

am kill: Kill all processes associated with <PACKAGE>.  Only kills.
  processes that are safe to kill -- that is, will not impact the user
  experience.

例えば:

adb shell am force-stop <YOUR.PACKAGE.NAME>
于 2012-07-16T19:24:06.200 に答える
3

独自のアプリの場合は、UncaughtExceptionHandlerを追加して、強制終了ダイアログを表示しないようにすることができます。そうでない場合は、以下が機能する可能性があります。

adbからプロセスを強制終了することもできます。(クレジット

adb shell kill $(adb shell ps | grep YOUR.PACKAGE.NAME | awk '{ print $2 }')

その後、を使用adb shell am ...してプロセスをリスポーンできます。

于 2012-07-16T18:46:14.233 に答える