Когда выйдет виртуальная машина приложений Android? - PullRequest
5 голосов
/ 28 февраля 2011

Мне было интересно, когда виртуальная машина приложений выйдет для приложения Android?

Причина, по которой я спрашиваю, заключается в том, что я думал о том, когда будут очищены какие-либо случайные потоки или ненулевые одноэлементные ссылки,что, на мой взгляд, происходит, когда процесс завершается или когда виртуальная машина закрывается.

У меня сложилось впечатление, что при вызове onDestory() для всех открытых операций виртуальная машина завершает работу, или если приложение былов фоновом режиме и должен был быть убит из-за ограничений памяти, виртуальная машина будет убита (вместе с процессом).

Я предполагаю, что мои вопросы:

  1. Являются ли мои предположения о том, когдаправильный выход из виртуальной машины?
  2. Будет ли это обеспечивать очистку любых случайных потоков и ненулевых одноэлементных собственных ссылок?

Ответы [ 2 ]

4 голосов
/ 28 февраля 2011

Мне было интересно, когда виртуальная машина приложений выйдет для приложения Android?

Возможно, он не выходит. Весь процесс прекращен. Это произойдет через некоторое время после того, как больше не будет запущенных компонентов. Как долго ваш процесс будет зависеть, зависит от объема оперативной памяти телефона, что еще происходит и т. Д.

У меня сложилось впечатление, что когда onDestory () для всех открытых операций вызывается, то виртуальная машина завершает работу

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

или если приложение было в фоновом режиме и должно было быть уничтожено из-за ограничений памяти, виртуальная машина была бы уничтожена (вместе с процессом).

Виртуальная машина Android может возвращать ОЗУ в ОС, поэтому при нехватке ОЗУ Android уничтожает действия, а не процессы. Теперь, если Android уничтожает все действия в процессе, он также может завершить процесс.

Будет ли это обеспечивать очистку любых случайных потоков и ненулевых одноэлементных собственных ссылок?

Они исчезнут, когда процесс будет завершен. Однако, поскольку вы не знаете, как долго это будет продолжаться, не просачивайтесь в потоки.

1 голос
/ 28 февраля 2011

Я надеюсь, что Android закрывает всю JVM и не доверяет чистке кода приложения без ошибок.Я был бы признателен за такое поведение как пользователь.

Однако вы должны тщательно очиститься в обратном вызове onDestroy.Используйте классы java.util.concurrent для простого управления потоками / задачами.

...