В моем приложении есть возможность иметь бесконечный стек активности.Сценарий состоит в том, что вы начинаете на странице одного пользователя, у которой есть список людей, которые являются «друзьями» этого пользователя.Затем вы можете нажать на друга, чтобы перейти на его страницу, которая похожа на предыдущую, где вы можете затем нажать на другого друга, чтобы перейти на его страницу, и так далее ...
Большая проблемаЯ сталкиваюсь с бесконечной родной кучей.Я считаю, что я добавляю в эту кучу каждый раз, когда представление надувается.После нескольких итераций я постоянно получаю ошибки OOM, поэтому мне нужно найти какое-то решение.Хитрость заключается в том, что я хочу сохранить как минимум несколько последних действий для навигации по некоторой истории.
Лучшее, что я могу придумать, - это контролировать стек действий, а затем начинать заканчивать действия, когда он достигает определенной точки.Похоже ли это на солидный подход, или даже дальше, может ли кто-нибудь указать мне на реализацию того или иного подхода?
Спасибо
edit:
Стек очень прост,Нажмите на список (друг), перейдите на их страницу.При этом используется обычный вызов startActivity с намерением перейти на ту же страницу, на которой вы находитесь, и дополнительное намерение с идентификатором пользователя, который затем вызывает базу данных или удаленный вызов API для получения данных пользователя.
ТакжеЧтобы узнать о Dalvik vs Native, я регулярно проверяю дамп meminfo во время навигации.Я держу кучу dalvik как можно меньше, очищая ресурсы в onStop.Родная куча растет намного быстрее.У меня нет жестких ссылок на растровые изображения где-либо, но на экране довольно много отрисовок от инфляций.Приведут ли эти рисунки к тому, что Android в конце концов убьет мою активность?Насколько я могу судить, они просто приводят к OOM, при этом ни одна из моих операций не может быть предотвращена в результате превентивного уничтожения.
Если бы я мог вручную уничтожить свои действия вместо того, чтобы просто остановить их (как утверждает Android, когда не хватает памяти), исохранить уничтоженную активность в стеке с сохраненным состоянием, это было бы идеально.
еще раз отредактируйте:
еще один ключ заключается в том, что с этими действиями будут смешаны другие действия, например
пользователь -> пользователь -> действие a -> пользователь -> действиеb -> user
, поэтому я хочу использовать встроенный стек, поэтому я знаю, когда мне нужно перейти к действиям пользователя, а когда нет.