【问题标题】:Android Interacting Thread and ActivityAndroid 交互线程和活动
【发布时间】:2014-05-14 23:37:39
【问题描述】:

我有 MainActivity 扩展了 Activity

我在 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();
}

我为传递 MainActivity 的 ThreadHandler 创建了构造函数 使用 showMessage 方法 但我有一个错误 “threadid = 12:线程退出未捕获的异常” “致命异常:线程 124”

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

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

【问题讨论】:

    标签: android multithreading interface


    【解决方案1】:

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

    final String s = streamIn.readUTF();
    activity.runOnUiThread(new Runnable() {
    
        public void run() {
            activity.showMessage(s);
        }
    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 2012-07-26
      相关资源
      最近更新 更多