ここで私はメモリリークに夢中になっていて、実際に何が1つにつながるか理解していないのです(そして普通のリンク、例えばhttp://kohlerm.blogspot.co.uk/2009/02/memory-leaks-are-easy-to-find.htmlを読んでいます)。onDestroy()には何が入っていなければなりませんか? (もし何かあれば)
PhoneStateListenerサブクラスをアクティビティ内に残しておくなど、いくつかの目的で作成しようとしましたが、DDMSヒープやMATの通常の状態では何も表示されませんでした。しかし、私は何度も何度も何度も繰り返し読んでいます.Destroyでも登録解除する必要があるだけでなく、onPause(PhoneStateListener() isn´t finished)
質問:そのようなリストはありますか? ボーナス質問:それは本当それはonPause/onDestroyなどを登録解除しない限りだPhoneStateListenerが
UPDATEリークを作成することです:を私は修正立っています。私のアプリケーションを何度も再生成すると、たとえsingleinstanceモードであっても、登録されたPhoneStateListenerはonDestroyが呼び出された後でもまだ生存しており、追加を開始します。私は現在、それらを殺すためのエレガントな方法で作業しており、結果をここに掲載します。
アップデート2:リスナーを登録解除するための正しい方法である: instanceOfTelephonyManager.listen(phoneStateListener、PhoneStateListener.LISTEN_NONE)。 は... API
Update3とに従って:としては、より良い言い回し質問にこれを結ぶと約束:https://stackoverflow.com/a/4607435/821423
あなたのタイトルに答えるためだけに、あなたが 'onDestroy()'に置き換える必要があるのは 'super.onDestroy()'です: – Jave
あなたがそれを再現できるのなら、あなたは幸運なプログラマーです。 'onDestroy'はあなたのアクティビティが破壊されたときに呼び出されるコールバックメソッドです。したがって、あなたの活動コードに応じて、ここでリソースを解放するかもしれません。 –
リスナーについて、 'onPause'は常に' onDestroy'の前に呼び出されるので、それを二度呼び出すことは意味がありません。 –