Деятельность не освобождает ресурсы, пока она не закончится. Но в большинстве случаев это не должно быть проблемой для вас. По моему мнению, вы не должны добавлять свое собственное управление ресурсами и усложнять ваш код в большинстве случаев.
Но если вы действительно думаете, что вашему приложению может не хватить памяти, вам следует проверить его, например, MAT . Проблемы с памятью могут быть вызваны утечками памяти, а не интенсивным использованием памяти.
В конце концов, когда вы абсолютно уверены, что вам нужно что-то сделать, чтобы уменьшить использование памяти, вы можете провести некоторую оптимизацию памяти. Например, вы можете сохранить объекты, потребляющие память (например, большие изображения), в локальное хранилище в onStop()
и загрузить их в onStart()
. Я думаю, что использование onPause()
/ onResume()
для этой цели - плохая идея, потому что активность частично или даже полностью видна.
Теоретически вы можете даже уничтожить все свои виджеты в onStop()
и восстановить их в onStart()
, но это может сделать ваше приложение слишком медленным. И, конечно же, в этом случае сохранение состояния должно осуществляться вами.
Завершение деятельности может показаться хорошей идеей, но я думаю, что это не так. Во-первых, это замедляет вашу работу. Во-вторых, вы должны сами управлять стеком активности и состоянием активности.
Например, действие A запускает действие B. Итак, действие B должно знать, что делать, когда пользователь нажимает кнопку «Назад». Когда пользователь нажимает кнопку «Назад», вы должны запустить Занятие А и восстановить его состояние. Но что, если пользователь прекращает это приложение. В этом случае вы должны инициализировать действие A с его состоянием по умолчанию. Итак, вам нужно реализовать много дополнительной логики.
В заключение я еще раз повторю основную идею: не оптимизируйте использование памяти, если вы не совсем уверены в этом!