线程

下面的代码是一个线程和handler,要创建一个线程可以这样写 

 Thread mThread = new Thread(new MyRunnable); 

创建线程后必须启动线程才能激活线程:

mThread.start();

这样,一个线程已经激活,下面的代码中message是要传递的消息,系统每10毫秒给handler发送一个消息,让handler去做一件事,在这里是让一个ImageVIew中的图片旋转,START_BUTTON_CLICKED是一个boolean变量,当为假时,则相关的代码块不执行,在handler和Runnable中必须都要使用这个if语句,否则将产生误差,这个误差是由系统执行程序代码耗时产生的,所以必须对发送的message和handler进行同步

private Handler handler = new Handler() {

@Override
public void handleMessage(Message msg) {
if (msg.what == 1) {// 指针旋转
++angle;
if (START_BUTTON_CLICKED) {//当状态为假时,不再处理消息,与下面的handler.sendMessage同时停止,保持同步,避免误差
secondHand.setRotation(angle * 6f);
                                minuteHand.setRotation(angle / 10f);
}
}

};


public class MyRunnable implements Runnable {

@Override
public void run() {
// TODO Auto-generated method stub
while (START_BUTTON_CLICKED) {
try {
Thread.sleep(10);
Message message = Message.obtain();
message.what = 1;

if (START_BUTTON_CLICKED) {//当状态为假时,则不发送消息
handler.sendMessage(message);
}


} catch (Exception e) {
// TODO: handle exception
}
}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值