Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TimerTask无法更新UI?_Java_Android_Task_Handler_Runnable - Fatal编程技术网

Java TimerTask无法更新UI?

Java TimerTask无法更新UI?,java,android,task,handler,runnable,Java,Android,Task,Handler,Runnable,我演示了键盘使用TimerTask,它运行良好。 如何解释?您可以使用runOnUiThread: new Timer().schedule(new TimerTask() { public void run() { KeyBoardUtil.showKeyBoard(et_search); } }, 300); 或 在上一课中,您学习了如何在ThreadPoolExecutor管理的线程上启动任务。最后一节课将向您展示如何

我演示了键盘使用TimerTask,它运行良好。
如何解释?

您可以使用
runOnUiThread

 new Timer().schedule(new TimerTask() {

        public void run() {
            KeyBoardUtil.showKeyBoard(et_search);
        }
    }, 300);

在上一课中,您学习了如何在ThreadPoolExecutor管理的线程上启动任务。最后一节课将向您展示如何将数据从任务发送到用户界面(UI)线程上运行的对象。此功能允许您的任务执行后台工作,然后将结果移动到位图等UI元素


每个应用程序都有自己的特殊线程来运行UI对象,比如视图对象;此线程称为UI线程。只有在UI线程上运行的对象才能访问该线程上的其他对象。因为在线程池中的线程上运行的任务没有在UI线程上运行,所以它们没有访问UI对象的权限。要将数据从后台线程移动到UI线程,请使用在UI线程上运行的处理程序。

您可以使用
runOnUiThread

 new Timer().schedule(new TimerTask() {

        public void run() {
            KeyBoardUtil.showKeyBoard(et_search);
        }
    }, 300);

在上一课中,您学习了如何在ThreadPoolExecutor管理的线程上启动任务。最后一节课将向您展示如何将数据从任务发送到用户界面(UI)线程上运行的对象。此功能允许您的任务执行后台工作,然后将结果移动到位图等UI元素


每个应用程序都有自己的特殊线程来运行UI对象,比如视图对象;此线程称为UI线程。只有在UI线程上运行的对象才能访问该线程上的其他对象。因为在线程池中的线程上运行的任务没有在UI线程上运行,所以它们没有访问UI对象的权限。要将数据从后台线程移动到UI线程,请使用UI线程上运行的处理程序。

我只想知道为什么在TimerTask中打开键盘时应用程序没有崩溃。我只想知道为什么在TimerTask中打开键盘时应用程序没有崩溃
Handler mainHandler = new Handler(context.getMainLooper());

Runnable myRunnable = new Runnable() {
    @Override 
    public void run() {
        // Your code
    }  
};
mainHandler.post(myRunnable);