0 android
我正在android平台上编写一个服务器客户端.如果其中一个客户端发送其中一个消息,则首先将消息发送到服务器并将服务器发送给客户端.当接收方客户端收到消息时,我必须setContentView这样,我需要打开消息传递屏幕.但它将消息放在不同的线程中,并作为参考传递给我的活动类.
Thread my = new MyThread(this);
Run Code Online (Sandbox Code Playgroud)
并在线程类不能设置内容视图,因为给出一个错误ViewRoot CalledFromWrongThread,我该怎么办?
UIThread是应用程序的主要执行线程.这是运行大多数应用程序代码的地方.您在此线程中创建了所有应用程序组件(Activities,Services,ContentProviders,BroadcastReceivers),并且在此线程中执行对这些应用程序的任何系统调用.
当您显式生成一个新线程以在后台工作时,此代码不会在UIThread上运行.那么如果这个后台线程需要做一些改变UI的事情会发生什么呢?这就是
runOnUiThread它的用途.实际上你应该使用一个Handler(有关这方面的更多信息,请参阅下面的链接); 它为这些后台线程提供了执行可以修改UI的代码的能力.他们通过将UI修改代码放在Runnable对象中并将其传递给RunOnUiThread方法来实现此目的.
(有关UI线程的更详细说明,请参阅/sf/answers/255743491/)
简而言之,这应该解决它:
runOnUiThread(new Runnable() {
public void run() {
// some code that needs to be ran in UI thread
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1857 次 |
| 最近记录: |