1

我已经开始在我的 Android 应用程序上跟踪内存泄漏,并且感谢伟大的LeakCanary库,我发现我的一些包含 a 的活动GooglePlusButton正在泄漏上下文。

不幸的是,我没有找到避免它的解决方法。正如这个旧的错误报告所述,初始化方法隐藏了它需要上下文的事实。此外,它需要一个 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 Services 9.6.0,但这个问题也发生在以前的版本上。

4

2 回答 2

0

上一个答案为我指明了一个新的方向。我最终通过动态创建 G+1 按钮并为构造函数提供应用程序上下文来管理它:

mPlusOneButton =  new PlusOneButton(getApplicationContext());
parent.addView(mPlusOneButton);
...
mPlusOneButton.initialize(..., new PlusOneButton.OnPlusOneClickListener() {
        @Override
        public void onPlusOneClick(Intent intent) {...}
      });
于 2017-01-06T02:19:55.263 回答
0

正如错误消息中所说,如果您在活动中使用 G+1 按钮(例如在应用栏菜单中),则需要通过调用方法initialize(String, OnPlusOneClickListener)对其进行初始化。

使用 URL 更新 +1 按钮。大多数应用程序在每次按钮处于焦点时调用此方法(例如,在 Activity onResume 方法中)。要使用此方法,必须将 PlusOneButton 放置在 Activity 中。否则使用 initialize(String, OnPlusOneClickListener)

更多信息在这里: https ://developers.google.com/android/reference/com/google/android/gms/plus/PlusOneButton

于 2017-01-02T01:29:34.367 回答