Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
1

Убить поток в адаптере

05.03.2014, 05:04. Просмотров 638. Ответов 2
Метки нет (Все метки)

После Делфи не до конца понимаю работу "сборщика мусора" Явы. Привык "подчищать" за собой сам.

Есть адаптер на основе BaseAdapter
В нем создаю отдельный поток.
В потоке запускаю бесконечный цикл, который по таймеру (заданному в милисекундах интервалу) что-то делает. Ссылка на поток хранится в private переменной адаптера

Вопрос: Убив адаптер, поток тоже убьется?

Код примерно такой:
Java
1
2
3
4
5
6
7
8
9
        Tread1 = new Thread(new Runnable() {
            public void run() {
                runed = true;
                while (runed){
                    // считаем милисекунды... что-то делаем...
                }
            }
        });
        Tread1.start();
Был бы делфи, в деструкторе (OnDestroy) запустил бы что-нибудь вроде Tread1.stop();
Но в яве даже не нашел перекрытие обработки OnDestroy

p.s. Адаптер создаю кучу раз(при каждом открытии активити), поэтому хочу убедиться что поток умирает вместе с ним...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2014, 05:04
Ответы с готовыми решениями:

Как убить поток в CountDownTimer?
Привет, бойцам невидимого фронта! есть эдакий кастомный CountDownTimer.java:...

NullPointerException в адаптере RecyclerView
Здравствуйте уважаемые форумчане! Столкнулся с такой проблемой, в RecyclerView...

Назначить идентификаторы кнопкам в адаптере списка
Есть цикл генерации данных для адаптера списка void fillData() { for...

Загрузки изображений из сети в адаптере GridView
Загружаю картинки в адаптере gridview: //.. ...

Поиск по ListView основанному на кастомном адаптере
Есть кастомный адаптер. ListView сделан на его основе. Данные загружаются из...

2
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
05.03.2014, 10:43 2
Цитата Сообщение от Tester64 Посмотреть сообщение
Вопрос: Убив адаптер, поток тоже убьется?
Я поэкспериментировал и пришел к выводу, что не убьётся. Более того, не получится даже убить адаптер. Логика такая: Чтоб убить объект достаточно уничтожить все ссылки на него и подождать пока сборщик мусора его прибьёт. Но для выполняющегося потока такое не пройдет, даже если занулить все ссылки на экземпляр класса Thread, то сборщик мусора его не тронет, вероятно где-то в недрах джава машины присутствует ссылка на него. Ваш класс Thread объявлен как вложенный класс внутри класса адаптера. Экземпляр вложенного класса (Thread ) всегда имеет ссылку на экземпляр класса который является для него "внешним" (ваш адаптер). В результате получается следующее:
1) экземпляр класса Thread никогда не будет выгружен из памяти
2) ваш вложенный класс Thread имеет ссылку на адаптер
3) адаптер не может быть выгружен из памяти так как на него всегда есть ссылка

Я могу ошибаться, поправьте если что не так.
1
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
05.03.2014, 19:28  [ТС] 3
Понятно... Предполагал подобное, поэтому и задал вопрос. Похоже прийдется делать как в Делфи - создавать свой метод OnDestroy, вызывать его обязательно перед закрытием активити, а в нем убивать поток.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2014, 19:28

Показывать или скрывать записи в адаптере
Создаю адаптер со всеми записями для RecycleView а потом нажимаю кнопку и...

Не обновлять айтемы в адаптере когда скроллим список
Такая проблема, есть адаптер с чекбоксами, я выбираю чекбоксы, потом опускаю...

Filterable не понимаю как в адаптере взять String значение по позиции ?
fragment: inputSearch.addTextChangedListener(new TextWatcher() { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru