Реализовать поведение, похожее на "не держать деятельность"

В моем приложении есть сценарий, в котором оно могло бы выполнять активность a-> активность b-> активность a-> активность b... бесконечно, и в конце концов оно получит OOM.

Кто-нибудь знает способ сделать его похожим на поведение "не держать действия", например, действия будут убиты, чтобы освободить память, но все еще в истории, чтобы ее можно было воссоздать при переходе пользователя назад?

1 ответ

Решение

Это невозможно Действия должны присутствовать в стеке, чтобы Android мог вернуться к ним. Что вы можете сделать, так это отслеживать данные, которыми действия управляют сами, чтобы при переходе пользователя от ActivityA к ActivityB к ActivityA вы продолжали помещать пакет данных в стек, доступный для обеих операций. Затем вы можете использовать `Intent.FLAG_ACTIVITY_REORDER_TO_FRONT'для перехода от одного занятия к другому.

В этом случае у вас будет только один экземпляр ActivityA и один экземпляр ActivityB, но они должны иметь возможность представлять пользователю другое представление каждый раз, когда они получают контроль, просто взглянув на пакет данных в верхней части стека. Когда пользователь нажимает кнопку "Назад", вы должны вытолкнуть верхний пакет данных из стека и затем запустить соответствующее действие для него (используя `Intent.FLAG_ACTIVITY_REORDER_TO_FRONT', чтобы убедиться, что вы не создаете новый экземпляр).

Другие вопросы по тегам