2

システムによって強制終了されたときにアクティビティが「onDestroy」メソッドを実行するのだろうか?

たとえば、「アクティビティ A」の状態が onStop の場合 (ユーザーはホーム ボタンを直接押すことができます)、同時に、システムはメモリが不足していることを検出するため、システムはフォアグラウンド アクティビティを維持するためにいくつかのバックグラウンド プロセスを強制終了する必要があります。 、システムキルアクティビティAと言います。

この状況で、アクティビティ A はメソッド「onDestroy」を実行しますか?

4

3 に答える 3

3

その時のシステムの状態に完全に依存します。ドキュメントはそれについて明確に述べてonDestroy()います:

システムがこのメソッド (または他のメソッド) を呼び出さずにアクティビティのホスティング プロセスを単純に強制終了する状況があるため、プロセスがなくなった後も残り続けることを意図したことを行うために使用しないでください。

ここを見る

于 2013-08-05T05:40:06.497 に答える
1

developer.android.com から:

When your activity receives a call to the onStop() method, it's no longer visible and should release almost all resources that aren't needed while the user is not using it. Once your activity is stopped, the system might destroy the instance if it needs to recover system memory. In extreme cases, the system might simply kill your app process without calling the activity's final onDestroy() callback, so it's important you use onStop() to release resources that might leak memory.

そのため、Android は通常、アクティビティが殺される前に onDestroy() を呼び出しますが、保証はされません。

リンク: http://developer.android.com/training/basics/activity-lifecycle/stopping.html

于 2013-08-05T05:39:58.477 に答える
0

システムがアプリケーションを強制終了すると、関連する PID が直接強制終了されるため、依存します。Android は Linux に他ならないため、コールバック メソッドを呼び出さずにSIG9 (9 番の信号は "kill")/ kill (アプリケーションの PID)を送信してアプリケーションを強制終了します。

于 2013-08-05T05:48:22.707 に答える