-1

アクティビティの最後にonDestroy()を呼び出したいと思います。
これが私が入れたものです:

@Override
protected void onDestroy()
{
    unbindDrawables(findViewById(R.id.rootView));
    super.onDestroy();
    System.gc();
}

しかし、それは決して呼び出されません。確かに、オートコンプリートを使用すると、onDestroy は表示されません...しかし、onPause、onCreate、onStop .... はい

ここで何かが恋しいですか?やっぱり私はバカなのかもしれません…

4

3 に答える 3

3

に電話する必要がありますfinish()

onDestroy は自動的に呼び出されますが、呼び出されることに依存するべきではありません。

onDestroy():

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

于 2012-08-01T13:03:16.287 に答える
0

onDestroyは呼び出されない可能性があります

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

派生クラスは、このメソッドのスーパークラスの実装を呼び出す必要があります。そうでない場合は、例外がスローされます。

于 2012-08-01T13:13:00.393 に答える
0

助けてくれてありがとう。onDestroy が呼び出されない可能性があることを理解しました。

理由はわかりませんが、Eclipse が onDestroy メソッドを要求するようになりました。だからそれは呼ばれますが、私がしたい場所ではありません。

于 2012-08-01T13:39:32.360 に答える