Android 在子线程中更新UI的几种方法

第一种:

new Handler(context.getMainLooper()).post(new Runnable() {

	@Override
	public void run() {
		// 在这里运行你要想的操作 比方直接在这里更新ui或者调用回调在 在回调中更新ui

	}
});

context是你传过来的context对象


另外一种:

// 假设当前线程是UI线程,那么行动是马上运行。假设当前线程不是UI线程,操作是公布到事件队列的UI线程
// 由于runOnUiThread是Activity中的方法,Context是它的父类,所以要转换成Activity对象才干使用
((Activity) context).runOnUiThread(new Runnable() {

	@Override
	public void run() {
		// 在这里运行你要想的操作 比方直接在这里更新ui或者调用回调在 在回调中更新ui
	}
});
第三种:

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

	private Handler handler = new Handler() {

		@Override
		public 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);


posted on 2015-03-11 17:21  gcczhongduan  阅读(257)  评论(0编辑  收藏  举报