Задать вопрос
@uzolenta

Почему не прекращается Thread после закрытия приложения?

Все здравствуйте!

Вызываю функцию:

myfun(){
var i = 0
while(i<100){
println("hi")
i++
}
}


В потоке:
Thread {
myfun()
}.start()


Почему функция продолжает работать, если я закрываю полностью приложение? Destroy срабатывает, соответственно.
Даже toast показывает, если вставить в функцию его показ.

Как долго может работать такой поток?
Можно ли задать ему имя (и как это сделать), чтобы при открытии программы знать запущен он или нет?
  • Вопрос задан
  • 96 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
Андроид это юникс, юникс многопоточная операционная система.
В них все что связано с удалением штатно срабатывает только, если нет активных указателей/ссылок на объект.
Конечно существуют аварийные методы завершения, когда пофиг на возможные креши других работающих вещей.
А что такое котлин приложение. Это код скомпилированный для ява виртуальной машины.
В JVM тоже наворочено.

По этому на вопрос "Когда умрет тред на который нет ссылок?" Ответ один "А хрен его знает"
может вообще дело дойти до зомби-процесса. Но обычно срабатывают механизмы сборки муссора и оптимизации расхода батареи.

Вот простенькая статья
https://habr.com/ru/sandbox/167189/
тут с примером, что потоки снаружи не убивают. А посылают сигнал завершиться
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы