Android交互线程和活动

时间:2014-05-14 23:37:39

标签: android multithreading interface

我有MainActivity扩展活动

我在MainActivity中启动线程 名为ThreadHandler的线程扩展了线程

没有“activity.showMessage; s” 它完全正常

这是运行方法

@Override
public void run() {
    Log.i("ThreadHandelr","running");
    while(true){
        try {
            String s = streamIn.readUTF();
            activity.showMessage(s);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

在MainActivity中有一个名为

的方法
public synchronized void showMessage(String s){
    Toast.makeText(MainActivity.this,s,0).show();
}

我为ThreadAandler制作了传递MainActivity的构造函数 使用showMessage方法 但是我收到了一个错误 “threadid = 12:线程退出未捕获的异常” “致命的例外:THREAD-124”

抱歉语法不好,因为英语不是我的第一语言tt

结论 如何在线程“run”中使用MainActivity方法

1 个答案:

答案 0 :(得分:0)

您应该使用Activity.runOnUiThread()与来自其他线程的任何UI组件进行交互。这意味着将代码更改为

final String s = streamIn.readUTF();
activity.runOnUiThread(new Runnable() {

    public void run() {
        activity.showMessage(s);
    }

});