流程:

1.点击开始,显示进度对话框,启动线程,循环发送消息(1-100)

2.更新对话框中的进度,和标题栏的进度

3.到达最大进度值时,关闭对话框,标题栏显示更新完成

解析:

1.在主线程处理handler的消息,更新Ui

2.在其他线程里用主线程的handler不停发送消息

3.线程启动,发送消息

 1 package com.bvin.thread;
 2
 3 import android.app.Activity;
 4 import android.app.ProgressDialog;
 5 import android.os.Bundle;
 6 import android.os.Handler;
 7 import android.os.Message;
 8 import android.util.Log;
 9 import android.view.View;
10 import android.view.Window;
11 import android.widget.Button;
12 import android.widget.TextView;
13
14 public class MainrActivity extends Activity {
15     /** Called when the activity is first created. */
16     private Handler handler;
17     private ProgressDialog dialog;
18
19     private TextView tv;
20
21     @Override
22     public void onCreate(Bundle savedInstanceState) {
23         super.onCreate(savedInstanceState);
24         this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
25         setContentView(R.layout.main);
26         setSecondaryProgress(10000); //设置副进度为10000
27         handler = new Handler(){
28
29             @Override
30             public void handleMessage(Message msg) {
31                 // TODO Auto-generated method stub
32                 super.handleMessage(msg);
33                 Log.e("progress:", ""+msg.what);
34                 setTitle("更新--"+msg.what);
35                 setProgress(msg.what*100);
36                 if(msg.what==100){
37                     setProgressBarVisibility(false); // 执行完后使进度条隐藏
38                     dialog.dismiss();
39                     setTitle("更新完成");
40                 }
41             }
42
43
44         };
45         initViews();
46
47     }
48
49     private void initViews(){
50
51         dialog= new ProgressDialog(MainrActivity.this);
52         dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
53         dialog.setMax(100);
54         Button bt = (Button)findViewById(R.id.bt);
55         bt.setOnClickListener(new View.OnClickListener() {
56
57             @Override
58             public void onClick(View v) {
59                 // TODO Auto-generated method stub
60                 setProgressBarVisibility(true);
61                 dialog.show();
62                 exec();
63             }
64         });
65
66         tv  = (TextView)findViewById(R.id.tv);
67
68
69
70     }
71
72     private void exec(){
73
74         new Thread(new Runnable(){
75
76             @Override
77             public void run() {
78                 // TODO Auto-generated method stub
79                 for(int i=0;i<=100;i++){
80
81                     handler.sendEmptyMessage(i);
82                 }
83             }
84
85
86         }).start();
87     }
88 }

Androidの多线程之更新ui(Thread+Handler+Message)相关推荐

  1. Androidの多线程之更新ui(AsyncTask)

    AsyncTask 构造(泛型参数) 外部步骤: AsyncTask task = new AsyncTask<params,values,result>(); task.exec(par ...

  2. Android多线程----异步消息处理机制之Handler

    虽然是国庆佳节,但也不能停止学习的脚步,我选择在教研室为祖国母亲默默地庆生. 关于Android的多线程知识,请参考本人之前的一篇博客:Android 多线程----AsyncTask异步任务详解 在 ...

  3. Android多线程界面更新方法的总结

    Android多线程与界面交互的方法 Activity.runOnUiThread(Runnable) View.post(Runnable),View.postDelay(Runnable,long ...

  4. Android子线程更新UI的方法总结

    消息机制,对于Android开发者来说,应该是非常熟悉.对于处理有着大量交互的场景,采用消息机制,是再好不过了.有些特殊的场景,比如我们都知道,在Android开发中,子线程不能更新UI,而主线程又不 ...

  5. android动画如何更新UI(ValueAnimator源码解析)

    概述 android动画经常会碰到卡顿,或者阻塞主进程之类的问题. 为了排查此类问题,不得不对动画原理了解一二,于是作此文. 此文围绕两个主线问题展开: ui更新的频率是如何控制的? 比如,1秒内会更 ...

  6. java 更新ui_你怎么解决Android开发中更新UI报错的异常吗-百度经验

    执行上述代码. 在App中点击"变透明"的按钮后,App就退出了. logcat中打印了这个错: 03-20 14:47:31.326 11640-11796/com.exampl ...

  7. ANDROID 学习笔记(三) UI THREAD AsyncTask 使用

    为什么80%的码农都做不了架构师?>>>    一般获取验证码,用户登录验证,上传头像,获取消息,发消息,评论 都可以使用 1.先上官网实例代码 private class Down ...

  8. Android多线程UI更新-Handler

    Handler 处理程序允许您发送和处理Message与线程关联的可运行对象MessageQueue.每个 Handler 实例都与单个线程和该线程的消息队列相关联.当你创建一个新的 Handler ...

  9. Android多线程源码学习笔记一:handler、looper、message、messageQueue

    最近在学习Android多线程相关知识的源码,现在把自己的笔记整理一下,写出来加深印象. Android多线程通讯的核心是handler.looper.message.messageQueue,这篇文 ...

最新文章

  1. 上帝和面向对象的七天
  2. 2020春季学期作业提交统计处理
  3. HTTP相关知识 - 1
  4. python 制作gif-利用Python如何制作好玩的GIF动图详解
  5. asp.NET自定义服务器控件内部细节系列教程五
  6. ios 容错处理JKDataHelper和AvoidCrash
  7. P2662 牛场围栏(同余最短路)
  8. u-boot与bootloader及其区别
  9. 架构设计系列(一)——架构设计概述
  10. 国内人气设计师交流平台集设
  11. 利用大数据构建智能交通
  12. Wget漏洞(CVE-2016-4971)利用方式解析
  13. web重启tomcat_使用docker构建jdk镜像和web服务镜像
  14. Java 核心技术点之注解
  15. 图像上采样和图像下采样
  16. C# list集合 重复元素 索引_Python列表(List)
  17. 还担心学习AI没有数学基础吗?读完它们,你就有了!!!
  18. Python 十六进制数与ascii码的转换
  19. 桌面宠物秀,电脑桌面美化
  20. 软件的高可用性、可扩展性和高性能

热门文章

  1. 在数据仓储的情况下进一步封装数据库基础操作,此版本为异步版本
  2. Linux CentOS 6.5 + Apache + Mariadb + PHP环境搭建
  3. JAVA的面向对象编程--------课堂笔记
  4. hadoop高速扫盲帖,从零了解hadoop
  5. 正确关闭WCF代理对象
  6. MySQL中的BLOB类型
  7. HDU2855 Fibonacci Check-up 矩阵的应用
  8. Nginx虚拟目录(转)
  9. 49个让你成功的人生细节
  10. mysql 插入怎么知道id_如何知道刚刚插入数据库那条数据的id