子线程更新UI的几种方法

来源:互联网 发布:人工智能 输入法 编辑:程序博客网 时间:2024/05/16 00:57

第一种:

new Handler(context.getMainLooper()).post(new Runnable() {@Overridepublic void run() {// 在这里执行你要想的操作 比如直接在这里更新ui或者调用回调在 在回调中更新ui}});

context是你传过来的context对象


第二种:

// 如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程// 因为runOnUiThread是Activity中的方法,Context是它的父类,所以要转换成Activity对象才能使用((Activity) context).runOnUiThread(new Runnable() {@Overridepublic void run() {// 在这里执行你要想的操作 比如直接在这里更新ui或者调用回调在 在回调中更新ui}});
第三种:

第三种是使用Handler的方法,往Handler中发送一个消息,然后当Handler接收到你发送过来的消息,再在Handler执行相应的操作
这是接收消息执行的代码:

private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 1:button1.setText("点击安装");down = 1;break;case 2:down = 2;button1.setText("打开");break;}}};

这是发送消息的代码:

// 往handler发送一条消息 更改button的text属性Message message = handler.obtainMessage();message.what = 1;handler.sendMessage(message);
0 0
原创粉丝点击