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)

  • 相关阅读:
    网络爬虫之框架(Scrapy)
    模拟投币试验
    [LeetCode#177]Nth Highest Salary
    Windows Server 2008 各版本功能差异与比较各版本概观--转载
    Win2008 R2下Server Core常用命令小结
    powershell 中用Sqlps管理我台sqlserver 2008r2
    初识 Markdown
    React 入门(3): 严格模式 ReactDOM
    ES6 类的正确定义方式 公有类字段 getter / setter
    Lodash 去抖动 节流
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7297607.html
Copyright © 2011-2022 走看看