博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Bundle、Handler和Message类介绍
阅读量:6186 次
发布时间:2019-06-21

本文共 1705 字,大约阅读时间需要 5 分钟。

  • Bundle是一个载体,可以存放基本数据类型、对象等内容,相当于一辆汽车,可以装载很多东西,然后运到需要的地方,例如:

 

Bundle mBundle=new Bundle();mBundle.putString("name","zhaolinit");mBundle.putInt("number",123456);mBundle.putBoolean("flag",false);//然后,放到Intent对象中Intent mIntent=new Intent();mIntent.putExtras(mBundle);

 

 

  • Message:包含描述和任意数据对象的消息,用于发送给Handler      

  它的成员变量如下:

public final class Message implements Parcelable {    public int what;    public int arg1;     public int arg2;    public Object obj;    ...    }

  其中what用于标识这条消息,也可以让接收者知道消息是关于什么的。arg1和arg2用于发送一些integer类型的值。obj用于传输任意类型的值。

 

  • Handler:消息处理者,通过重写Handler的handleMessage()方法,在方法中处理接收到的不同消息,例如:
Handler mHandler=new Handler(){        @Override        public void handleMessage(Message msg) {            switch (msg.what) {                case TestHandler.TEST:             progressValue += msg.arg1; Log.d("progressValue-------------->", progressValue+"");             break;        }        }  }

  在其它地方,通过sendMessage()方法,发送消息,以供handleMessage()方法接受

class myThread implements Runnable {             public void run() {                 while (!Thread.currentThread().isInterrupted()) {                                               Message message = new Message();                       message.what = TestHandler.TEST;                                             TestHandler.this.myHandler.sendMessage(message);                       try {                            Thread.sleep(100);                        } catch (InterruptedException e) {                            Thread.currentThread().interrupt();                       }                  }             }        }

        通过子线程处理一些耗时的操作,然后把处理后的结果通过sendMessage()方法发送到UI主线程。让主线程的Handler进行UI组件的结果更新。

      

 

转载于:https://www.cnblogs.com/longzhongren/p/6102594.html

你可能感兴趣的文章
delphi中文插入数据库乱码解决
查看>>
mysql TIMESTAMP(时间戳)详解
查看>>
Linux MySQL Table is read only的具体解决方案
查看>>
Windows Server 2012从Evaluation版转成正式版
查看>>
流之过滤器流(缓冲流)
查看>>
root无法本地登录
查看>>
.net 4.0(2.0)“检测到有潜在危险的 Request.Form 值”的解决方法
查看>>
对你的爱——我只想用程序来表达!
查看>>
VmwareTools for linux的安装
查看>>
python 实现多线程ping检测服务器情况
查看>>
xencenter 轉移 WINDOWS VM 到 HYPERV
查看>>
Flyway做数据库脚本版本管理--开源
查看>>
我的友情链接
查看>>
iOS中的视频播放
查看>>
手机端与网页通过websocket通信
查看>>
Exchange刷新已禁用邮箱状态
查看>>
我的友情链接
查看>>
SQL*Loader使用方法
查看>>
ERP系统容灾方案典型架构
查看>>
我的友情链接
查看>>