2016-08-30 6 views

ответ

4

Вы можете использовать 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; этот поток называется потоком пользовательского интерфейса. Только объекты, запущенные в потоке пользовательского интерфейса, имеют доступ к другим объектам в этом потоке. Поскольку задачи, которые вы запускаете в потоке из пула потоков, не работают в потоке пользовательского интерфейса, они не имеют доступа к объектам пользовательского интерфейса. Чтобы переместить данные из фонового потока в поток пользовательского интерфейса, используйте обработчик, который работает в потоке пользовательского интерфейса.

+0

Я просто хочу понять, почему приложение не сработало, когда открытая клавиатура в TimerTask –