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) {...} 
     });