2017-02-26 5 views
17

を使用してリークした私は、メモリリークを追跡するためにリークカナリアを使用していますが、それは次のようにリークされたと言う:MainActivityがleakcanary

static hk.o 
references ht.a 
leaks MainActivity instance 

hk.oht.a何ですか?私はMainActivityでそれらを持っていません。

+0

私はおそらく、Google Playのサービスライブラリに関連する何かを同じ問題を持っています。 – meh

+0

これらのクラス名は難読化されており、何でもかまいません。漏れのメニューにShare Infoボタンがあり、ここに出力全体を投稿します。 –

答えて

3

私はそれらが依存関係のいずれかのプロガードされている(リバースエンジニアリングを防ぐためにランダムな名前のクラス名を変更した)と思います。私はアプリでGoogle Sign Inのようなものが使われているときにこれを見ました。

Googleサービスのクラスは、一般にPro Guardedです。

こちらがお役に立てば幸いです。

3

これらのクラスは、第三者のライブラリクラスです。 MainActivityインスタンスを引数として取り、クラスのインスタンスがライブラリに属する​​ものを渡すことができます。アクティビティを渡す必要がない場合は、ApplicationContextを引数として使用できます。

0

私はこれを追跡しましたが、犯人はGoogle Adsです。 あなたが言及したクラスは、play-services-adsに含まれているcom.google.ads.interactivemedia.v3:interactivemediaというライブラリのものです。

アクティビティへの参照は、アクティビティコンテキストに合格したPublisherAdViewのコンストラクタを介して設定されました。アプリでも同様の広告ビューを使用している可能性があります。回避策として

、私は今、リークを解決しているように思われ、広告表示にアプリケーション・コンテキストを渡す:

new PublisherAdView(getContext().getApplicationContext()) 
関連する問題