我試圖實施Chrome自定義選項卡並通過LeakCanary檢測到內存泄漏。在Chrome自定義選項卡中檢測到內存泄漏
演示應用程序不出現泄漏,除非我們添加另一活性層(即MainActivity
啓動Activity2
,其結合/解除綁定到自定義標籤服務並啓動URL - 一切MainActivity
確實在demo app)。
MainActivity看起來是這樣的:
public class MainActivity extends Activity implements OnClickListener {
private Button mLaunchButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LeakCanary.install(getApplication());
setContentView(R.layout.main);
mLaunchButton = (Button) findViewById(R.id.launch_button);
mLaunchButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int viewId = v.getId();
if (viewId == R.id.launch_button) {
Intent intent = new Intent(getApplicationContext(), Activity2.class);
startActivity(intent);
}
}
}
從Activity2
到MainActivity
返回將導致此泄漏:
09-04 13:49:26.783 10456-12161/org.chromium.customtabsclient.example D/LeakCanary﹕ In org.chromium.customtabsclient.example:1.0:1.
09-04 13:49:26.783 10456-12161/org.chromium.customtabsclient.example D/LeakCanary﹕ * org.chromium.customtabsclient.Activity2 has leaked:
09-04 13:49:26.783 10456-12161/org.chromium.customtabsclient.example D/LeakCanary﹕ * GC ROOT android.support.customtabs.CustomTabsClient$1.val$callback (anonymous class extends android.support.customtabs.ICustomTabsCallback$Stub)
09-04 13:49:26.783 10456-12161/org.chromium.customtabsclient.example D/LeakCanary﹕ * references org.chromium.customtabsclient.Activity2$2.this$0 (anonymous class extends android.support.customtabs.CustomTabsCallback)
09-04 13:49:26.783 10456-12161/org.chromium.customtabsclient.example D/LeakCanary﹕ * leaks org.chromium.customtabsclient.Activity2 instance
https://gist.github.com/abvanpelt/ddbc732f31550b09fc27
我的問題是:這是在演示應用程序中的錯誤? (也許unbindCustomTabsService()
缺少一些所需的拆解?)或者,這是Chrome自定義選項卡庫本身的錯誤?
謝謝。
謝謝,這固定了泄漏。奇怪的是,我看到一個不同的泄漏(這裏記錄:https://code.google.com/p/chromium/issues/detail?id = 473146),它已在Chromium 42中修復。我在Chromium 44上仍然看到一個'ResourcesContextWrapperFactory'泄漏。 :/ – Allison
作爲更新,github上的演示應用程序已更新以避免內存泄漏。 – andreban
:(無法對此泄漏問題做任何事情,仍在尋找好的解決方案。 我的應用程序中存在同樣的問題,它一直在抱怨泄漏了ServiceConnection –
Manisha