Утечка памяти при использовании общего перехода - PullRequest
0 голосов
/ 08 июня 2019

Итак, Leak Canary обнаружил утечку, которую я сузил до моего shared element transition.Утечка Canary утверждает, что вызываемый (второй) 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");
...