@vladocc

Как в Java вызвать метод основного потока по окончании работы фонового?

У меня есть функция поиска на карте памяти файлов определенного типа. Она занимает большое время и потому находится в фоновом потоке. После ее завершения мне необходимо вывести названия этих файлов на экран, а сделать я это могу только из основного потока.
В итоге у меня возникает задача, по завершении фонового потока вызвать метод основного и метод join здесь не подойдет, т.к. мне нужно чтобы основной поток работал в то время, когда работает фоновый, а не ждал его окончания.
  • Вопрос задан
  • 509 просмотров
Решения вопроса 1
@belozerow
Используйте asynctask
Либо, если не хотите переделывать, создайте в основном потоке (просто вне вашего фонового потока, например полем в классе), Handler mainThread = new Handler(); и вызовите уже в вашем потоке
mainThread.post(new Runnable(){
//ваш ui код
})
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Error_403_Forbidden
@Error_403_Forbidden
Можно ещё в основном потоке сделать подписку на своё событие.
А в методе onPostExecute (AsyncTask) вызвать это событие и передать туда результат работы фонового процесса
Ответ написан
@vladocc Автор вопроса
Наиболее логичный и удобный способ это использование AsyncTask, который обладает методом onPosyExecute, который будет вызван по окончании работы фонового потока и вызываться будет из основы.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы