Android 通过Message在子线程中更新Activity中UI的方法

概要:

在Android中是不允许从子线程中直接操作UI的,这里介绍一种通过Message在子线程中更新Activity中UI的方法

| |目录

package net.xsoftlab.baike;
public class testMessage extends Activity {
	private String TAG = "testMessage";
	private Button btnEnd;
	private TextView labelTimer;
	private Thread clockThread;
	private boolean isRunning = true;
	private Handler handler;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		btnEnd = (Button) findViewById(R.id.btnEnd);
		btnEnd.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				isRunning = false;
			}
		});
		handler = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				switch (msg.what) {
				case 0:
					labelTimer.setText("用时 " + msg.obj + " 秒");
				}
			}
		};
		labelTimer = (TextView) findViewById(R.id.labelTimer);
		clockThread = new Thread(new Runnable() {
			@Override
			public void run() {
				int timer = 0;
				while (isRunning) {
					try {
						Thread.currentThread().sleep(1000);
						timer++;
						/* labelTimer.setText("用时 " + timer + " 秒"); */
						Message msg = new Message();
						msg.obj = timer;
						msg.what = 0;
						handler.sendMessage(msg);
						Log.d(TAG, "lost  time " + timer);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		});
		clockThread.start();
	}
}


评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
  • 全部评论(0)
资料加载中...
已关注 , 取消