Google PlusOneButton漏掉了一个背景

时间:2016-09-25 15:01:13

标签: android memory-leaks google-play-services google-plus-one leakcanary

我已经开始在我的Android应用上跟踪内存泄漏了,感谢好的LeakCanary库,我发现我的一些包含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)."); 的活动正在泄露上下文。< / p>

不幸的是,我没有找到解决方法来避免它。如此old bug report所述,initialize方法隐藏了它需要一个上下文的事实。此外,它需要一个Activity上下文; Android工作室反编译器显示它(错误记者也告诉它):

{{1}}

有没有比完全摆脱+1按钮更好的解决方法?

注意:我使用的是Google Play Services 9.6.0,但此问题也出现在以前的版本中。

2 个答案:

答案 0 :(得分:0)

正如在错误消息中所说,如果您在活动中不使用G + 1按钮(例如在应用栏菜单中),则需要通过调用方法 initialize(String,OnPlusOneClickListener)来初始化它/ em>的

  

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

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

答案 1 :(得分:0)

之前的回答指出了我的新方向。我最后通过动态创建G + 1按钮并为构造函数提供Application上下文来管理它:

mPlusOneButton =  new PlusOneButton(getApplicationContext());
parent.addView(mPlusOneButton);
...
mPlusOneButton.initialize(..., new PlusOneButton.OnPlusOneClickListener() {
        @Override
        public void onPlusOneClick(Intent intent) {...}
      });