我已经开始在我的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,但此问题也出现在以前的版本中。
答案 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) {...}
});