分析:

翻译:只有创建视图层次结构的原始线程(通常是主线程或UI线程)才能操作这些视图

即普通的java线程不能直接UI

查找代码,发现是:

new Thread(new Runnable() {

    // 内部直接操作了UI对象

})

修改:

第一步,在UI类中定义handler 

注:msg.what是消息码,注意一致

private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 1) {
                EditText tipTxt = mainActivity.getTipTxt();
                tipTxt.setTextColor(Color.RED);
                tipTxt.setText("发送文件异常,请检查服务连接情况。");
            }
        }
    };

第二部,在线程中调用handler.sendEmptyMessage

new Thread(new Runnable() {
// 其他非UI操作业务代码
// 删除涉及UI操作的代码,移动到handler中;调用handler.sendEmptyMessage() handler.sendEmptyMessage(1); })

 

posted on 2025-03-07 22:20  le.li  阅读(761)  评论(0)    收藏  举报