Вызов функции finish() из активности освободит мое пространство памяти?
У меня есть активность, которая использует большой объем памяти в моем приложении. Поэтому всякий раз, когда пользователь переключается с этой активности на другую деятельность, я пытаюсь вызвать finish(), чтобы остановить эту активность.
Мой вопрос заключается в том, что вызов функции finish() из этой активности освободит память или просто завершит эту операцию, не очистив память, используемую этим конкретным действием?
Любая помощь очень ценится.
Ответы
Ответ 1
Активность, вызываемая методом finish()
, уничтожается, и все ее ресурсы помещаются в очередь для сбора мусора, потому что ссылка на это действие становится недоступной. Таким образом, вся память, которая была использована этим действием, будет освобождена в течение следующего цикла GC.
Ответ 2
Пожалуйста, попробуйте это в своей деятельности и проверьте..
@Override
public void onDestroy() {
super.onDestroy();
Runtime.getRuntime().gc();
}
Ответ 3
Да, pixie, правильно о finish(), просто для получения дополнительной информации о вызове finish в активности, удаляет эту активность из стека. Это означает, что при переходе из Activity 1 → Activity 2 и вызывающей активности 2, если функция finish() вызывается в действии 1, то действие 1 удаляется из стека.