Итак, 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");