1

我已經開始跟蹤我的Android應用程序的內存泄漏,並且感謝LeakCanary偉大的庫,我發現包括GooglePlusButton在內的一些活動正在泄漏上下文。Google PlusOneButton泄漏上下文

不幸的是,我沒有找到避免它的解決方法。正如old bug report所述,initialize方法隱藏了它需要上下文的事實。此外,它需要一個活動上下文; Android的工作室反編譯器顯示它(的bug記者告訴它):

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

正如在錯誤消息,如果使用的是G + 1按鈕不處於活動(例如,在應用欄菜單),則需要通過調用方法初始化(字符串,OnPlusOneClickListener)初始化它說。

使用URL更新+1按鈕。每次按鈕處於焦點時,大多數應用程序都會調用此方法(例如,在Activity onResume方法中)。要使用此方法,PlusOneButton必須放置在一個Activity中。 使用初始化(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) {...} 
     });