android handle

public class TestHandler extends Activity {
	public static final int SLEEP_TIME = 300;
	protected static final int GUIUPDATEIDENTIFIER = 0x101;

	Thread myRefreshThread = null;
	BounceView myBounceView = null;

	Handler myHandler = new Handler() {
		public void handleMessage(Message msg) {

			switch (msg.what) {
			case TestHandler.GUIUPDATEIDENTIFIER:
				if (msg.arg1 == 2) {
					myBounceView.x -= 20;
				}
				myBounceView.invalidate();
				break;
			}
			super.handleMessage(msg);
		}
	};

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);

		this.myBounceView = new BounceView(this);
		this.setContentView(this.myBounceView);
		new Thread(new myThread(1)).start();
		new Thread(new myThread(2)).start();

		/*
		 * new Thread( new Runnable() { public void run() { while(true){
		 * Log.i("inner thead1"
		 * ,myBounceView.x+"--"+Thread.currentThread().getName());
		 * //myBounceView.invalidate(); //invalidate must be called from UI
		 * thread myBounceView.postInvalidate(); try { Thread.sleep(SLEEP_TIME);
		 * } catch (InterruptedException e) { // TODO Auto-generated catch block
		 * e.printStackTrace(); } }
		 * 
		 * } }).start(); new Thread( new Runnable() { public void run() {
		 * while(true){ myBounceView.x-=20;
		 * Log.i("inner thead2",myBounceView.x+"--"
		 * +Thread.currentThread().getName()); myBounceView.postInvalidate();
		 * try { Thread.sleep(SLEEP_TIME); } catch (InterruptedException e) { //
		 * TODO Auto-generated catch block e.printStackTrace(); } }
		 * 
		 * } }).start();
		 */
		Log.i("main thead", "--" + Thread.currentThread().getName());
	}

	class myThread implements Runnable {
		private int cnt;

		public myThread(int cnt) {
			// TODO Auto-generated constructor stub
			this.cnt = cnt;
		}

		public void run() {
			while (!Thread.currentThread().isInterrupted()) {
				Log.i("mythead " + cnt, "--" + Thread.currentThread().getName());
				Message message = new Message();
				message.what = TestHandler.GUIUPDATEIDENTIFIER;
				message.arg1 = cnt;
				myHandler.sendMessage(message);
				try {
					Thread.sleep(SLEEP_TIME);
				} catch (InterruptedException e) {
					Thread.currentThread().interrupt();
				}
			}
		}
	}
}


貌似自己手动写thread也能实现handle的功能,handle应该是类库封装的更简便的操作,通过invalidate和handle可能都是在消息队列中添加一消息,然后在主线程从消息队列中获取一个消息,然后更新UI

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值