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