8

アクティビティにキャッシュ クリーニング コードをいくつか入れましonDestroyたが、ほとんどの場合、 を介して明示的にアクティビティを終了しない限り、コードは実行されませんfinish()

編集: Just readは、システムのリソースが不足している場合にonDestroyのみ呼び出されます。finish()では、キャッシュ クリーニング コードをどこに置く必要があるのでしょうか。それを入れてonPause()ユーザーがアプリに戻ると、キャッシュがクリアされます。私は実際にキャッシュに重要な一時ファイルを保存していますが、これは削除してはいけませんonPause

4

3 に答える 3

16

Android 開発者ドキュメントから:

保護されたボイド onDestroy ()

API レベル 1 で追加されました。アクティビティが破棄される前に、最終的なクリーンアップを実行します。これは、アクティビティが終了している ( finish()が呼び出された)ため、またはシステムがスペースを節約するためにアクティビティのこのインスタンスを一時的に破棄しているために発生する可能性があります。これら 2 つのシナリオは、isFinishing() メソッドで区別できます。

注:このメソッドがデータを保存する場所として呼び出されるとは考えないでください。たとえば、アクティビティがコンテンツ プロバイダのデータを編集している場合、それらの編集は、ここではなく onPause() または onSaveInstanceState(Bundle) でコミットする必要があります。このメソッドは通常、アクティビティに関連付けられているスレッドなどのリソースを解放するために実装されます。これにより、アプリケーションの残りの部分がまだ実行されている間に、破棄されたアクティビティがそのようなリソースを残さないようにすることができます。システムがこのメソッド (または他のメソッド) を呼び出さずにアクティビティのホスト プロセスを単純に強制終了する状況があるため、プロセスがなくなった後も残り続けることを意図したことを行うために使用しないでください。

onPause()コードをまたはに移動できますonStop()

于 2013-10-26T16:23:18.803 に答える
3

オンストップを使ってみる

このような

@Override
    protected void onStop() {
        super.onStop();
       //write your code here
    }
于 2013-10-26T16:25:53.770 に答える
1

ondestroy は、システムがアクティビティをメモリから完全に削除したとき、またはユーザーがアクティビティを強制終了したときに呼び出されることがほとんどです。一時停止時にデータを保存したい場合は、破棄の前に常に呼び出されるためです。

于 2013-10-26T16:24:44.423 に答える