Вы можете использовать runOnUiThread
:
runOnUiThread(new Runnable(){
public void run() {
// Your code
}
});
Или
Handler mainHandler = new Handler(context.getMainLooper());
Runnable myRunnable = new Runnable() {
@Override
public void run() {
// Your code
}
};
mainHandler.post(myRunnable);
developer.android.com
В предыдущем уроке вы узнали, как запустить задачу на нить под управлением ThreadPoolExecutor. На этом последнем уроке вы узнаете, как отправлять данные из задачи в объекты, запущенные в потоке пользовательского интерфейса (UI). Эта функция позволяет вашим задачам выполнять фоновую работу, а затем перемещать результаты в элементы пользовательского интерфейса, такие как растровые изображения.
Каждое приложение имеет свой собственный специальный поток, который запускает объекты пользовательского интерфейса, такие как объекты View; этот поток называется потоком пользовательского интерфейса. Только объекты, запущенные в потоке пользовательского интерфейса, имеют доступ к другим объектам в этом потоке. Поскольку задачи, которые вы запускаете в потоке из пула потоков, не работают в потоке пользовательского интерфейса, они не имеют доступа к объектам пользовательского интерфейса. Чтобы переместить данные из фонового потока в поток пользовательского интерфейса, используйте обработчик, который работает в потоке пользовательского интерфейса.
Я просто хочу понять, почему приложение не сработало, когда открытая клавиатура в TimerTask –