実行中のプログラムを停止するオプションが見つかりません(デバッグモードでもリリースモードでも)。
そのため、現時点では、エミュレーターを閉じるだけでプログラムを停止します(Eclipseに制御を戻します)。
これを行うより良い方法はありますか?エミュレータを閉じる(再起動する)必要はありませんか?
エミュレータ上でアプリを停止したいことを理解しています。このために、(デバッグパースペクティブで)デバイスウィンドウを開き、プロセスを選択してから、同じウィンドウの停止ボタンを押します。
プログラムを停止するためにパースペクティブを切り替えるのが面倒な場合(私がしたように)、現在のパースペクティブでデバイスウィンドウを表示するには、
Windows> ビューの表示> その他...> Android> デバイス
Androidでは、プログラムは通常、finish()またはメモリが必要なときにシステムがそれらを破壊する場合にのみ「停止」することに注意してください。なぜ停止するのですか?たとえば、修正/再インストール/再テストのために停止する必要はありません。
「デバッグ」パースペクティブで、「デバッグ」(アクティブなスレッドのリストがある)の下でアプリケーションのルートを選択し、停止ボタンをクリックします。
私のために働いています。
Windows->パースペクティブを開く->その他...-> DDMS
通常のビューに戻るには、右上にあるJavaボタンを押すだけです。Windows->パースペクティブを開く->その他... -> Java
この答えはEclipseを扱っていませんが、この質問は実行中のAndroidプログラムを停止するためのGoogle検索で出てくるので、コマンドラインメソッドを提供したいと思います。run adb Shell
、ps
で強制終了するプロセスのPIDを見つけます。たとえば、私のものは次のとおりです。
u0_a46 2097 37 175520 19912 ffffffff 40037ebc S net.unternet.bleah.blarg
それでちょうどkill 2097
そして、メイン画面が再び表示されるはずです。
停止するコードにブレークポイントを追加し、F11キーを押してデバッグモードで実行します。
図1-この回答の調査中に多くのゾンビが殺された
Android application Java VM OSレベルでのプロセスは推奨されません。残念ながら、これはまさにEclipse System.exit()およびシェルの "kill"コマンドと同様に、デバイスウィンドウは "stop"します。
これにより、onStop()、onDestroy()、finalize()などの通常のアプリライフサイクルメソッドが破壊されます。
多くのアプリは、正常な終了のためにこれらのメソッドを必要とします(たとえば、センサー、MediaPlayer、イコライザー、ビジュアライザーなどのシステムオブジェクトを使用する場合)。
これらのシステムオブジェクトは、これらのライフサイクルメソッド中にrelease()が明示的に呼び出されない場合、システムリソースに対するゾンビデスグリップでハングアップします。図を参照してください。上記1。これにより、アプリの再起動が妨げられ、再起動が必要になることもあります。それは不名誉な側面です。
唯一の解決策は、onStop()、onDestroy()、または少なくともfinalize()を呼び出して、常にアプリを完全に終了するようにすることです。デバッガーはこれを行い、シャットダウン時のOSも同様です。
コマンドラインからの正常な終了を強制するために、SIG_HUPイベントをトラップするようにアプリを設定できます。
アプリを強制終了するのは、VMがANR(すでにゾンビ)状態になっている場合のみです。ANRを修正する必要があります。この状態に移行できるアプリを展開しないでください。
GoogleアナリティクスとPlayストアを使用して、展開中にこれらを監視できます。ゾンビアプリケーションが原因で再起動する必要がある場合、怒っているユーザーがシングルスターのANRレビューを行うのは望ましくありません。ひどい。
AndroidはLinuxです。実際のOSのように扱い、アプリのライフサイクルを尊重してください。さもないと、恐ろしいゾンビの黙示録に直面することになります。
PS:ゾンビの例えが気に入らなければ、ファンタジアはどうですか?
図を参照してください。1. DDMSをクリックします。 2.現在のアプリを選択します。 3.「停止」をクリックします