zoukankan      html  css  js  c++  java
  • android线程控制UI更新(Handler 、post()、postDelayed()、postAtTime)

    依照以下的理解就是handler与ui线程有一定的关联能够由于更新界面仅仅能在主线程中全部更新界面的地方能够在接受消息的handleMessage那里还有更新界面能够在handler.port(new Runnable))在自己定义的线程中然后运行post方法通知主线程去更新这个界面

    以下是參考:

    Android 线程是单线程的。

    所以更新UI要用到Handler:

    private Handler splashHandler = new Handler() {
         public void handleMessage(Message msg) {
           switch (msg.what) {
           case OVER:
            progressDialog.dismiss();
            break;
           default:
               break;
           }
              super.handleMessage(msg);
         }
    }; 当一个线程执行完成后能够发送通知给Hanler,通知主线程更新UI :

    new Thread() {public void run() {
          initList();
          Message m = splashHandler.obtainMessage(OVER);
          splashHandler.sendMessage(m);
          splashHandler.post(r);
          splashHandler.postDelayed(r, delayMillis);
          splashHandler.postAtTime(r, uptimeMillis);

       }}.start();也能够直接使用:

    splashHandler.post(new Runnable(){
        public void run() {
        progressDialog.dismiss();
    }
    });
    //splashHandler.postDelayed(r, delayMillis);
    //splashHandler.postAtTime(r, uptimeMillis);直接在Runnable 中更新UI。由于此时的 Runnable 是执行在UI所在的主线程中。

    android线程控制UI更新(Handler 、post()、postDelayed()、postAtTime)

  • 相关阅读:
    linux命令学习(3):ls命令
    敏捷开发 我的经验(三)运转
    敏捷开发 我的经验(二)资源计算-以人为本
    敏捷开发 我的经验(一)基本概念
    docker 搭建ntp服务器
    非程序员误入
    简单测试服务器磁盘读写速度
    搭建问题二之您添加的站点已存在
    搭建遇到问题一之安装fileinfo扩展插件失败
    简单快速搭建视频网站
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7297607.html
Copyright © 2011-2022 走看看