У вас есть много вариантов здесь.
Более простой способ - не останавливать свой activity
при переключении на другой. Когда вы переходите на уровень 4 с помощью startActivity()
, ваш onPause()
вызывается на уровне 3, но он продолжает жить в фоновом режиме. Затем, когда вы вернетесь из 3, onResume()
называется.
Так что, пока вы не загружаете данные на resume
или finish()
на level 3 activity
, все будет в порядке. Если в системе слишком мало ресурсов, то активность уровня 3 может быть убита (хотя это очень редко) и перезапущена , когда вы вернетесь к ней, но если это произойдет, это означает, что системе нужна память для что-то важное, и это, вероятно, нормально перезагрузить.
Теперь, есть и другие способы . Обычно лучше сделать это, как я описал выше, но если по какой-то причине вы хотите закончить упражнение 3 уровня, Вот ваши варианты.
Как уже было отмечено, вы можете выбрать куда-нибудь сбросить свои данные. Сохраненное состояние экземпляра является опцией, хотя, если объем данных превышает несколько килобайт, это не рекомендуется. Идея в том, что , вы сохраняете свои данные в onSaveInstanceState()
в Bundle и восстанавливаете их в onCreate()
.
Если это тяжелые данные, лучше поместить их в файл кэша.
Если у вас есть модель данных и вы хотите использовать одни и те же данные в нескольких действиях, например, в виджете и, возможно, даже в другом приложении, вы можете подумать о создании ContentProvider
для предоставления данных. Он будет жить независимо от других частей вашего приложения и управлять доступом к данным. Другие части будут запрашивать у них необходимые данные.
Хорошая вещь об этом, это абстрагирует данные от остальной части программы. К нему можно получить доступ из любого места и политики кэширования, а все обрабатывается в специальном месте. Недостаток в том, что он значительно сложнее.