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)

  • 相关阅读:
    利用kettle中的JS来完成ETL数据校验
    spring cloud学习地址
    centos7 卸载 gitlab
    为什么WEB-INF外的jsp无法根据cookie享受国际化
    改变maven父子项目视图为树状
    maven profiles、filters、resources学习笔记 及 常用 plugin demo
    Tomcat 签名认证配置简例
    CentOS 开机启动
    Tomcat 关闭时报错
    比较全的log4j示例
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7297607.html
Copyright © 2011-2022 走看看