У меня есть три действия, которые запускаются в цепочке. ActivityA запускает ActivityB, который затем запускает ActivityC. У меня также есть объект Application.
ActivityA начинает ActivityB с (этот фрагмент фактически находится в анонимном классе, поэтому ему нужно getApplicationContext()
вместо this
).
startActivity(new Intent(getApplicationContext(), ActivityB.class));
ActivityB запускает ActivityC с
startActivity(new Intent(this, ActivityC.class));
В ActivityC, если пользователь хочет вернуться к ActivityA, он нажмет кнопку, которая вызывает
startActivity(new Intent(getApplication(), ActivityA.class));
Мой вопрос: правильно ли это сделать, избегая утечек памяти?
Это может быть, но я рекомендую использовать
android:launchMode="singleTop"
в вашем манифесте для ваших действий.
И, вообще говоря, не забывайте, что функции уже уложены андроидом, но вы правы, иногда этот механизм стекирования недостаточно гибкий.
Stéphane
FLAG_ACTIVITY_CLEAR_TOP
.
startActivityForResult()
Хотите ли вы вместо этого использоватьstartActivityForResult()
или установите флаг для намерения, чтобы поддерживать только одну версию действия в стеке.