Activity.finish () вызван, но активность остается загруженной в память - PullRequest
11 голосов
/ 04 января 2011

Когда я запускаю свое приложение в отладчике, я получаю основной поток и 3 потока связующего.

При нажатии кнопки я вызываю Activity.finish () , что выглядит такзавершает действие, когда пользовательский интерфейс закрывается, и возвращается к начальному экрану.

Однако в отладчике он по-прежнему отображает основной поток и 3 потока связующего как « (выполняется) ».

Я сбит с толку, почему это происходит.Более того, мое приложение вызывает Activity.onResume () , когда я запускаю его снова после выхода из приложения.

В настоящее время я переопределяю эти методы в Activity, но вызываюсоответствующие супер-функции в каждом:

  • onDestroy ()
  • onPause ()
  • onResume ()
  • onSaveInstanceState ()

Любая помощь или совет по этому поводу высоко ценится!

1 Ответ

22 голосов
/ 04 января 2011

Вы не контролируете, когда ваше приложение покидает основную память, ОС контролирует.Посмотрите внимательно на Activity.finish ...

Позвоните, когда ваша деятельность будет завершена и должна быть закрыта.ActivityResult передается обратно тому, кто запустил вас через onActivityResult ().

Обратите внимание, что это ничего не говорит о памяти.Что касается вызова Activity.onResume, это именно то, что вы ожидаете в течение жизненного цикла;помните, что onResume вызывается не только после возобновления, но даже когда приложение запускается впервые после onCreate.

Хотя это не совсем то, что вы просили, я предлагаю вам прочитать эту статью о кнопках выхода чтобы сказать что-то очень важное

[Activity.finish] в точности соответствует нажатию кнопки назад.

...