9

について混乱していActivity.onDestroy()ます。アクティビティが破棄されたときにいくつかのリソースを解放する必要がありますが、「戻る」キーを押したときに onDestroy() が呼び出されたようですが、Dalvik によってアクティビティが強制終了されたときではありません。ログを追加するだけでテストしました:

Log.v("my_tag", "onDestroy() called");

onCreate() メソッドでも同じです。

Log.v("my_tag", "onCreate() called");

次に、アクティビティを開始すると、ログに表示されます: onCreate() called. 「戻る」キーを押してからアクティビティを再度開始すると、次のように表示されます。

onDestroy() called
onCreate() called 

次に、「ホーム」キーを押してアクティビティに再度移動しますが、ログは変更されません。ここで大丈夫です。

次に、「ホーム」キーをもう一度押して、本当に「重い」アプリケーションをいくつか起動します。ログには onDestroy() については何もありませんが、アクティビティを再度開始すると、ログに次のように表示されます: onCreate() called! そのため、onDestroy() は呼び出されませんでしたが、Activity は強制終了されました。どうしたの?

4

1 に答える 1

8

onDestroy()ドキュメントから:

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

onDestroy()Androidでは、保証付きの通話は受けられません。
一部のリソースを解放する場合は、onPause()代わりにそれを実行する必要があります。

于 2011-12-29T11:02:17.183 に答える