[英]TimerTask can not update UI?
new Timer().schedule(new TimerTask() {
public void run() {
KeyBoardUtil.showKeyBoard(et_search);
}
}, 300);
我显示键盘使用TimerTask,并且运行正常。 怎么解释呢?
您可以使用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);
在上一课中,您学习了如何在ThreadPoolExecutor管理的线程上启动任务。 最后一课向您展示如何将数据从任务发送到在用户界面(UI)线程上运行的对象。 此功能允许您的任务执行后台工作,然后将结果移至UI元素(例如位图)。
每个应用程序都有自己的特殊线程来运行UI对象,例如View对象; 该线程称为UI线程。 只有在UI线程上运行的对象才能访问该线程上的其他对象。 因为您在线程池中的线程上运行的任务不在您的UI线程上运行,所以它们无权访问UI对象。 要将数据从后台线程移动到UI线程,请使用在UI线程上运行的Handler。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.