Android 如何从线程更新uithread

Android 如何从线程更新uithread,android,Android,我想构建一个安卓应用程序,连接到蓝牙设备,如果设备连接成功,则在UI线程上打印“connected”。 但是我不知道如何在线程之间传递值 有人能帮我吗?尝试使用静态变量如果您只是想在UIThread runOnUiThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub Toast.makeText(this, "Connecte

我想构建一个安卓应用程序,连接到蓝牙设备,如果设备连接成功,则在
UI线程上打印“connected”。
但是我不知道如何在线程之间传递值

有人能帮我吗?

尝试使用静态变量如果您只是想在
UIThread

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        // TODO Auto-generated method stub
        Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show();
    }
});

请发布您的代码,我将更新答案。

使用处理程序将消息发布到主线程。在
onHandlemessage()
中,可以更新主线程UI。无法从线程更新主线程UI


使用和链接作为处理程序参考。

您有几种方法。最简单的方法是使用
Activity.runOnUiThread()
方法(有关更多信息,请参阅)

您也可以使用
Handler
s来实现这一点,它将两个不同的
Thread
s相互通信。在UI线程中定义
处理程序
,将其传递给处理程序,并使用它向
UI线程
发送消息。也许可以找到一个很好的例子

您还可以使用本地
广播接收器
。您只需定义要在其中处理数据的接收器(因此,UI线程)并在此处处理您想要的任何内容。一个很好的例子是

后者2基于
Intent
s,因此您需要确保所传递的数据实现了
Serializable
Parcelable
或是
Intent
支持的数据类型

----编辑---

要更新
文本视图
,请在
线程中使用类似的内容。它将在您的
UI
线程中运行所需的操作,因此从
线程更新
视图
不会有问题:

try {
  runOnUiThread(new Runnable() {
    @Override
    public void run() {
      TextView tv = (TextView) findViewById(R.id.your_textview);
      tv.setText("My text updated within a Thread");
    }
  });
} catch (InterruptedException e) {
  e.printStackTrace();
}

您可以选择上面发布的runOnUiThread,我也使用它从线程更新视图

public void handleMessage(Message msg) {  
    super.handleMessage(msg);  
    if(msg.what == 1) {  
        changeText(); //here you can make changes on UI
    }
}
从线程中调用它就可以了

textHandler.sendEmptyMessage(1);  

感谢您的回答,但我不明白如果使用run-on UI方法,如何从连接活动访问TextView