使用共享元素跨时的内存泄漏

时间:2019-06-08 01:13:38

标签: android memory-leaks shared-element-transition

因此,Leak Canary发现了一个泄漏,我将泄漏范围缩小到了shared element transition。泄漏金丝雀指出被呼叫的Activity(第二个)正在泄漏。附带说明一下,我也传递了一个Parcelable对象,尽管在我看来这不是问题。除了泄漏之外,一切都按预期进行。

从任何其他类调用时,这都会泄漏DetailActivity。

Intent intent = new Intent(this, DetailActivity.class);
intent.putExtra("intent_detail_object", detailObject);
//shared element transitions
Pair<View, String> p1 =Pair.create(v_name, "name");
Pair<View, String> p2 =Pair.create(relativeLayout, "layout");
ActivityOptionsCompat options =ActivityOptionsCompat.makeSceneTransitionAnimation(this, p1, p2);
ActivityCompat.startActivityForResult(this, intent, "is_updated", options.toBundle());

请注意,在我从“详细信息”活动返回(按后退按钮)后,似乎仅在按下后退按钮时才识别出泄漏。 AFAIK,Android处理了此过渡。 作为解决问题的一部分,我了解到,如果卸下shared element transistion,则不会发生泄漏。

这不会泄漏

Intent intent = new Intent(activity, DetailActivity.class);
intent.putExtra("intent_detail_object", detailObject);
startActivityForResult(intent, "is_updated");

0 个答案:

没有答案