2016-12-05 6 views
1

最近、私は現在android- https://medium.com/google-developer-experts/weakreference-in-android-dd1e66b9be9d弱い参照を使用してメモリリークを避ける最善の方法..?

に弱参照を避けることについて語るブログに出くわした、私が働いているプロジェクトはMVPアーキテクチャをたどり、私たちはさまざまなコールバックのプレゼンターに(リスナーに)弱い参照を使用events.However 、私は弱い参照を使用する代わりに別の方法を探しています。おそらく、私は自分のアプリケーションアーキテクチャを設計して、そのようなメモリリークの問題を避けることができます。

私が現在使用しているアプローチ、すなわち、プレゼンターのさまざまなリスナーに弱い参照を使用することは有害なのでしょうか?それがもっと良い方法でこの問題を解決する方法よりも?

+0

この記事をご覧くださいhttps://medium.com/@m_mirhoseini/yet-another-mvp-article-part-1-lets-get-to-know-the-project-d3fd553b3e21#.6y9ze7e55また、このサンプルMVPプロ​​ジェクトhttp://github.com/mmirhoseini/marvel助けてくれるかもしれません... –

+1

ありがとう。本当に助けられました – Sammer

答えて

1

現在のアプローチは、プレゼンターのさまざまなリスナーに弱い参照を使用することは有害なものですか?

多分。コードベースを掘り下げずに具体的に言うのは難しいです。それが言われると、WeakReferencesの一般的な欠点を考慮する必要があります。私はそれを明確にしている別のStackOverflow answerにあなたを指します:

...弱い参照はちょうど(「私はどこかに追加されたリスナーを削除することを忘れないように心に留めておくべき」)一つの問題を解決するだけでなく、上昇しない使用します別のもの - 「私の聴衆が何かを聞いているときに、聞いていることが何であれ、聞いていることが何であるかを心に留めておくべきです。あなたは問題を解決していない、ただ一つの問題を別の問題と交換するだけだ。あなたがリスナーの寿命を明確に定義し、設計し、追跡することを強要してきたことは、何らかの形で、何らかの形で起こります。私はより良い方法でこの問題を解決する方法を


so..than場合?

「弱い参照」を使用してゆっくりとピッキングを開始します。削除してください。 Androidで提供されているライフサイクルイベントをあなたの恩恵に活用し、正しい時に取り外して接続してください。最後に、ツールボックスにLeakCanaryを追加します。これを使用して、さまざまなアクティビティおよびフラグメントのライフサイクルを巡って、リークがいつどこで作成されているかを確認します。

関連する問題