1

私はAndroidアプリでメモリリークを追跡し始めました。LeakCanaryライブラリのおかげで、GooglePlusButtonを含むアクティビティの一部がコンテキストを漏らしていることがわかりました。Google PlusOneButtonがコンテキストをリークします

残念ながら、私はそれを回避するための回避策を見つけることができませんでした。このold bug reportで説明されているように、initializeメソッドは、コンテキストが必要であるという事実を隠します。さらに、Activityコンテキストが必要です。 Androidのスタジオデコンパイラは、(バグレポーターは同様にそれを伝える)ことを示しています

public void initialize(String var1, int var2) { 
    zzab.zza(this.getContext() instanceof Activity, "To use this method, the PlusOneButton must be placed in an Activity. Use initialize(String, OnPlusOneClickListener)."); 

は、任意の回避策は完全に+1ボタンを取り除くよりも優れていますか?

注:私はGoogle Playサービス9.6.0を使用していますが、この問題は以前のバージョンでも発生しています。

答えて

0

あなたは、メソッド初期化(文字列、OnPlusOneClickListener)を呼び出すことによって、それを初期化する必要があります(アプリバーのメニューの例)活動していないG + 1ボタンを使用している場合、それはエラーメッセージに言われています。

[+1]ボタンをURLで更新します。ほとんどのアプリケーションは、ボタンがフォーカスされるたびに(たとえば、アクティビティonResumeメソッドで)このメソッドを呼び出します。このメソッドを使用するには、PlusOneButtonをアクティビティに配置する必要があります。 initialize(String、OnPlusOneClickListener)を使用します。それ以外の場合はです。ここ

詳細情報: はhttps://developers.google.com/android/reference/com/google/android/gms/plus/PlusOneButton

+0

アクティビティでG + 1ボタンを使用しています。コンテキストリークが発生します。 –

0

前の回答が新しい方向に私を指します。最終的にG + 1ボタンを動的に作成し、コンストラクタにアプリケーションコンテキストを渡して管理します:

mPlusOneButton = new PlusOneButton(getApplicationContext()); 
parent.addView(mPlusOneButton); 
... 
mPlusOneButton.initialize(..., new PlusOneButton.OnPlusOneClickListener() { 
     @Override 
     public void onPlusOneClick(Intent intent) {...} 
     }); 
関連する問題