Chromeのカスタムタブを実装し、LeakCanaryでメモリリークを検出しようとしています。Chromeのカスタムタブでメモリリークが検出されました
デモ・アプリケーションは、我々は別のアクティビティ層を追加しない限り漏れるように見えない( - MainActivity
がdemo appで行うすべてを、すなわちMainActivity
は/カスタムタブサービスへのバインドを解除し、URLを起動し結合する、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
私の質問がされています:これはデモアプリケーションのバグです。このリークが発生しますActivity2
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);
}
}
}
? (おそらくunbindCustomTabsService()
には必要な分解がありませんか?)これはChromeカスタムタブライブラリ自体のバグですか?
ありがとうございます。
ありがとう、これは、そのリークを修正しました。不思議なことに、Chromium 42で修正された別のリークが見つかっています(https://code.google.com/p/chromium/issues/detail?id=473146)。これはChromium 42で修正されました。 'ResourcesContextWrapperFactory'リークを参照してください。 :/ – Allison
更新プログラムとして、githubのデモアプリケーションがメモリリークを防ぐために更新されました。 – andreban
:(このリークの問題については何もできませんでしたが、まだ良い解決策を探しています。 私のアプリケーションで同じ問題が発生していますがServiceConnectionをリークしました –
Manisha