5

1つのアクティビティとパッケージ名でAndroidアプリケーションを作成しました"com.explore"

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

psコマンドを実行します。

USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
app_137   2974  91    478604 48524 ffffffff 00000000 S com.explore

戻るボタンを押します。アプリケーションを終了してホーム画面に移動します。もう一度psコマンドを実行します。

USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
app_137   2974  91    472428 42572 ffffffff 00000000 S com.explore

プロセス2974はまだ実行中です。誰かが私に行動を説明してもらえますか?それはメモリ使用量、状態、またはプロセスが持続する期間ですか?押し返した後、コードからプロセスを強制終了する必要がありますか?プロセスを正常に強制終了する方法は?

4

2 に答える 2

5

アプリケーションを実行するときに、まだ実行されていない場合は、新しいプロセスIDを取得します。このIDは、メモリに存在しなくなるまでそのまま残ります。(これは、アプリケーション設定の[強制停止]オプションを使用して実現およびテストできます。)

ただし、ユーザーが[戻る]または[ホーム]ボタンを押しても、アプリは終了せず、ほとんどの場合、一時停止または停止するだけです。

プロセスのライフサイクルについて詳しく説明しているこのドキュメントを読むことができます。ポイント1と2は、基本的に、フォアグラウンドプロセス(またはダイアログなどの表面的なものの背後にあるプロセス)は、絶対に必要な場合(強制的に閉じるか、メモリがない場合)に終了しないことを示しています。ポイント3は重要です。デバイスのメモリに応じて、不要になったプロセス(つまり、ユーザーがプロセスを「閉じた」)が強制終了される場合と強制終了されない場合があることを示しています。そして最後に、ポイント4は、何もしていないが、存在しているだけのものは、できるだけ早く殺されます。

Activityライフサイクルも確認することをお勧めします。これにより、アプリケーションの各ステップがいつ発生するか(つまり、一時停止したとき、停止したとき、および破棄されたとき)が正確に表示されます。それが実際にカバーしていない唯一のことは、メモリの過剰割り当て(またはライフサイクル全体を再トリガーする方向の変更)です。

結論として、Androidはスマートであることを忘れないでください。ほとんどの開発者よりもプロセスを適切に管理し、簡単に再利用できるようにできるだけ多くのプロセスを維持しようとします。プロセスのメモリが不足していることが絶対に確実でない限り、プロセスを強制終了しないでください。そして、私たちがプロセスを殺して管理しなければならない方法は決してきれいではありません

于 2012-09-10T05:27:16.217 に答える
2

基本を読み始めます。つまり、ほとんどの場合、プロセスを気にする必要はありません。Androidがプロセスの開始と停止を自動的に処理します。プロセスを強制終了すると、システムが再起動する可能性があるため、通常、得るものはあまりありません。「タスクキラー」や、今日ではほとんど役に立たない同様のユーティリティを忘れてください。

于 2012-09-10T05:08:43.403 に答える