Я видел некоторые публикации на эту тему, но ни один из них не имеет удовлетворительных ответов.Как долго длится рабочий стол Android?
Предположим, что я начал рабочий поток из моего основного (одного и того же) Activity
в своем методе onCreate()
. Затем я вызываю finish()
, чтобы вызвать завершение операции Activity
.
В этот момент задача, к которой он принадлежит, уничтожается (поскольку в ней больше нет Activity
). Приложение (и процесс, выполняющий его) может продолжать существовать, однако, в пустой форме «скелета», чтобы при желании его можно было быстро перезапустить (хотя он был бы очень восприимчивым к тому, чтобы его убили системой).
Предполагая, что это правильно - когда рабочая нить убита? Это только убито, когда система активно разрушает процесс?
В моем случае мой рабочий поток существует как слушатель для подключения Bluetooth; когда он получен, он снова запустит желаемый Activity
. В этой ситуации активно не работает компонент (Activity
, Service
, ContentProvider
или BroadcastReceiver
). Мне кажется, что это должно сработать, за исключением того, что что-то убивает мою рабочую нить.
Я знаю, что мог бы сделать это (и с меньшей болью), используя фон Service
. Однако мне интересно, почему это не работает.
Спасибо, Barry
Я считаю, что поток будет уничтожен автоматически, только когда процесс Linux будет уничтожен. – Enzokie
_ «Мне кажется, что это должно сработать, за исключением того, что что-то убивает мой рабочий поток». Это может означать, что [система завершила процесс приложения] (http://stackoverflow.com/questions/34463069/can-android -kill-мое-приложение-то время-это-это-в-среднего уровня с петлями-исполнение). _ «Это только убито, когда система активно разрушает процесс?» _ Исправить (или если метод 'run()' возвращает). – Onik
Согласовано. Тогда возникает вопрос, когда этот процесс убит? Я предполагаю, что он убит, когда нет более запущенных компонентов, но я не видел, чтобы это явно документировано где угодно. Подробнее в ответе на ответ «BroadcastReceiver» Олега, ниже. –