Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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 从另一个线程调用runOnUiThread_Java_Android_Multithreading - Fatal编程技术网

Java 从另一个线程调用runOnUiThread

Java 从另一个线程调用runOnUiThread,java,android,multithreading,Java,Android,Multithreading,我需要等待一段时间(10秒),然后我必须重新绘制画布。我用来测量时间段。我的代码(仅部分): 不幸的是,我不知道这是否正确,但这是我唯一的解决办法。也许有人能帮忙或知道更好的解决办法。我会很感激的 另外,对不起,我的英语不好。您也可以使用AsyncTask。让Android处理线程创建 protected Long doInBackground(URL... urls){Thread.sleep(10000);} protected void onPostExecute(Long result)

我需要等待一段时间(10秒),然后我必须重新绘制画布。我用来测量时间段。我的代码(仅部分):

不幸的是,我不知道这是否正确,但这是我唯一的解决办法。也许有人能帮忙或知道更好的解决办法。我会很感激的


另外,对不起,我的英语不好。

您也可以使用AsyncTask。让Android处理线程创建

protected Long doInBackground(URL... urls){Thread.sleep(10000);}
protected void onPostExecute(Long result) {methodToRedraw();} 

您在哪里创建要发布到的处理程序?它是在活动中创建的吗?如果是这样,则不需要runOnUiThread调用,因为处理程序已经在UI线程上运行。@twaddington是对的。如果在主线程中创建处理程序,则发布的方法将在ui线程中运行。如果您使用的是runOnUiThread,您可能不需要处理程序。是的,我在活动中创建了处理程序。所以在这种情况下,可运行的更新将在UI线程上运行?@mainmilly这是正确的。您不必更改代码,但在这种情况下,对runOnUiThread的调用是多余的。根据处理程序文档:“当您创建一个新的处理程序时,它被绑定到正在创建它的线程/消息队列”:
protected Long doInBackground(URL... urls){Thread.sleep(10000);}
protected void onPostExecute(Long result) {methodToRedraw();}