Что происходит с потоком (Thread) при закрытии активности?
-
samodelkin
- Сообщения: 52
- Зарегистрирован: 27 ноя 2013, 15:23
Что происходит с потоком (Thread) при закрытии активности?
Здравствуйте, скажите пожайлуста если в активности выполняется поток (Thread) в бесконечно цикле, то при закрытии активности методом finish() поток уничтожится?
Re: Что происходит с потоком (Thread) при закрытии активност
он будет продолжать работать, но управлять им ты уже не сможешь, поэтому сколько он проработает - это будет решать система.
Вообще тема потоков очень интересная, советую почитать об этом в учебнике, так просто в теме этот вопрос не раскроешь, там много нюансов.
Вообще тема потоков очень интересная, советую почитать об этом в учебнике, так просто в теме этот вопрос не раскроешь, там много нюансов.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Что происходит с потоком (Thread) при закрытии активност
Если вкратце посмотри этот ответ и камменты к нему: http://stackoverflow.com/a/11541256/1159507
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
Re: Что происходит с потоком (Thread) при закрытии активност
Еще вот http://habrahabr.ru/post/133413/
и вот http://habrahabr.ru/post/124484/
сам сегодня интересовался.
и вот http://habrahabr.ru/post/124484/
сам сегодня интересовался.
Re: Что происходит с потоком (Thread) при закрытии активност
по сути создавая любой поток и вызывая метод thread.start() происходит следующее:samodelkin писал(а):Здравствуйте, скажите пожайлуста если в активности выполняется поток (Thread) в бесконечно цикле, то при закрытии активности методом finish() поток уничтожится?
1. отрабатывает нативный метод VMThread_create()
2. метод JNI: Dalvik_java_lang_VMThread_create(const u4* args, JValue* pResult)
3. метод Dalvik: dvmCreateInterpThread(Object* threadObj, int reqStackSize)
4. главная часть - метод linux kernel: pthread_create
 Отсюда какой вывод можно сделать? Это обычная POSIX и никто ваш поток в системе трогать не будет до тех пор, пока не произойдет исключение(к примеру он исчерпает свои ресурсы). Либо в стеке(Runtime thread stack) его "вытолкнут".
 Вывод Activity не имеет отношения к потоку и ваш метод finish() ему(потоку) пофиг...
P.S. забудьте о подобеных вопросах - поведение потоков в java непредсказуемо(вы обязанны так думать), ВСЕГДА убивайте свой поток явно, НИКОГДА не полагайтесь на состояние потока, единственный разумный способ отслеживания состояния - возврат результата либо exception. Иначе тушите свет и начинайте с начала... потом будет хуже

- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Что происходит с потоком (Thread) при закрытии активност
Как вариант, превратить поток в демон поток, тогда он умрет при закрытии приложения.Отсюда какой вывод можно сделать? Это обычная POSIX и никто ваш поток в системе трогать не будет до тех пор, пока не произойдет исключение(к примеру он исчерпает свои ресурсы).
