У меня есть два вида деятельности: ActivityA и ActivityB. ActivityA запускает Activity B для результата и ожидает определенный resultCode. Если это не получается, ActivityA завершается. Идея заключается в том, что это закрывает приложение.Android onActivityResult и onResume Lifecycle после небольшой очистки памяти
ActivityA также имеет метод onResume, который делает некоторые вещи. Я не хочу, чтобы это было сделано, если ActivityA решает закончить метод onActivityResult.
Это работает в большинстве случаев, за исключением ситуаций с низкой памятью, когда андроид удаляет ActivityA и ActivityB из памяти и перезагружает их.
Например: ActivityA начинает ActivityB. Обоснование приложения. Тогда андроид все-таки очищает память. Мы можем имитировать это в DDMS.
- Принесите приложение на передний план.
- OnCreate() призвал ActivityB
- Кнопка назад закончить ActivityB
- OnCreate() призвал ActivityA
- onActivityResult() призвал ActivityA
- результат является отмена, вызов послевкусие()
- onResume() призвал ActivityA
- на резюме делает вещи
Эти последние два шаги нежелательны. Без проблем низкой памяти, нормальный рабочий процесс выглядит следующим образом:
- Принесите приложение на передний план
- кнопку Назад, чтобы закончить ActivityB
- onActivityResult() призвал ActivityA
- результат является отмена, вызов отделка()
Я видел это как на телефоне, работающем в прянике, так и на бегущей железе Nexus 7.
Мой первый вопрос: не хватает ли я чего-то очевидного в жизненном цикле активности?
В противном случае это ожидаемое поведение от Android? Есть ли элегантный способ разрешить это, или мне нужно что-то взломать, или я должен попробовать другой подход?
Заранее спасибо. Если кому-то нужна дополнительная информация или код, просто дайте мне знать.
То, что я сделал. Кроме того, я назвал переменную ohGodWhy. Я надеялся, что есть лучшее решение:/ – jacobhyphenated
Вы можете переопределить onLowMemory в B и называть его завершением. –
Я не думаю, что это проблема. Кажется, что B заканчивается правильно и возвращает правильный код результата A. Это A, у которого проблемы.Кроме того, я не хочу всегда заканчивать(), если есть небольшая память. В идеале пользователь может вернуться к B и выполнить Activity, и не было бы необходимости называть finish() для любого из них. – jacobhyphenated