加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

Android之Handler用法概括

发布时间:2021-11-21 19:45:26 所属栏目:教程 来源:互联网
导读:方法一:(Java习惯,在Android平台开发时这样是不行的,因为它违背了单线程模型) 刚刚开始接触Android线程编程的时候,习惯好像java一样,试图用下面的代码解决问题 new Thread( new Runnable() { public void run() { myView.invalidate(); } }).start();
方法一:(Java习惯,在Android平台开发时这样是不行的,因为它违背了单线程模型)
 
刚刚开始接触Android线程编程的时候,习惯好像java一样,试图用下面的代码解决问题
 
new Thread( new Runnable() {   
    public void run() {   
        myView.invalidate();   
    }           
}).start();
 
可以实现功能,刷新UI界面。但是这样是不行的,因为它违背了单线程模型:Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。
 
方法二:(Thread+Handler)
 
查阅了文档和apidemo后,发觉常用的方法是利用Handler来实现UI线程的更新的。
 
Handler来根据接收的消息,处理UI更新。Thread线程发出Handler消息,通知更新UI。
 
Handler myHandler = new Handler() {
          public void handleMessage(Message msg) {
              switch (msg.what) {
                    case TestHandler.GUIUPDATEIDENTIFIER:
                        myBounceView.invalidate();
                        break;
              }
              super.handleMessage(msg);
          }
    };
 
 
 
class myThread implements Runnable {
public void run() {
while (!Thread.currentThread().isInterrupted()) {
 
Message message = new Message();
message.what = TestHandler.GUIUPDATEIDENTIFIER;
 
TestHandler.this.myHandler.sendMessage(message);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读