Android Handler机制图解以及在实际中的运用
来源:互联网 发布:2016淘宝最新刷单方法 编辑:程序博客网 时间:2024/05/20 08:23
大家在Android开发中不免会遇到主线程跟新UI,线程切换的场景,其中Handler就是一名大将了有必要对他进行了解。
一、图解Handler的基本概念
什么是Handler呢,Handler是Android给我们提供来跟新UI的一套机制,也是一套消息处理的机制,可发送也可通过他来处理消息,我们看下图。
二、为什么用Handler
Android为什么要设计只能通过Handler机制跟新UI呢,最根本目的就是解决多线程并发问题,只有主线程能更新UI,
试想多线程进行更新UI,又没有枷锁机制,会跟新界面混乱,如果对跟新ui 操作进行枷锁处理又会导致性能下降,Handler就出现了
三、Handler的使用步骤
- 主线程声明Handler实例
private Handler mHandler = new Handler(new Handler.Callback() { /** * @param message callback用于获取handler发送的消息, * @return 如果返回true就回去成功不会向下传递老,即不执行下面的handleMessage方法达到拦截目的 */ @Override public boolean handleMessage(Message message) { return false; } }){ @Override public void handleMessage(Message msg) { switch (msg.what){ case 0: //在这里可以进行UI操作 //对msg.obj进行String强制转换 String str = (String) msg.obj; mTvShow.setText(str); break; default: break; } } };
- 子线程发送消息
mTvShow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(2000);//模拟网络操作 } catch (InterruptedException e) { e.printStackTrace(); } //创建一个message设置what字段的值为1,主要是区分不同的message //设置message.obj的内容,调用Handler的message对象 String str = "Nice to Meet You"; Message msg = new Message();//创建也可用复用系统的message对象Message msg = mHandler.obtainMessage(); msg.what = 0;//消息标示 msg.arg1=2;//存放整形数据,如果携带数据简单,优先使用arg1和arg2,比Bundle更节省内存。 msg.arg2=3; //存放整形数据 //msg.obj = str;//msg.obj = xxx可传递一个对象 Bundle bundle=new Bundle(); bundle.putString("dd","adfasd"); bundle.putInt("love",5); msg.setData(bundle); msg.obj=bundle; //用来存放Object类型的任意对象 mHandler.sendMessage(msg);//子线程中向UI线程发送msg进跟新UI /** * mHandler.sendEmptyMessage(int);发布一个空消息 * mHandler.sendMessage(msg);允许你安排一带数据的Message对象到队列中等待跟新。 * mHandler.sendMessageAtTime(Message,long); * mHandler.sendMessageDelayed(Message,long); * sendEmptyMessageAtTime(int what, long uptimeMillis); //定时发送空消息 * sendEmptyMessageDelayed(int what, long delayMillis); //延时发送空消息 * sendMessageAtFrontOfQueue(Message msg); //最先处理消息(慎用) */ } }).start(); } });
待续…
阅读全文
0 0
- Android Handler机制图解以及在实际中的运用
- Handler机制在秒表中的运用
- runtime介绍以及在项目中的实际运用
- Android 蓝牙4.0在实际开发中的运用
- 迪米特法则在Android实际开发中的运用
- Android中的Handler机制
- Android中的Handler机制
- Android中的Handler机制
- Android中的Handler机制
- Android中的Handler机制
- Android中的Handler机制
- Android中的Handler机制
- Android中的Handler机制
- Android中的Handler机制
- Android中的Handler机制
- Android中的Handler机制
- Android中的Handler机制
- Android中的Handler机制
- 查询数据库自己建的表
- RxJava详解
- webpack 基础入门
- AfxMessageBox 找不到标识符
- iOS app被拒------热更新
- Android Handler机制图解以及在实际中的运用
- .NET 的 WebSocket 开发包比较
- Apusic jspc预编译提高访问速度
- 一张图了解javaJwt
- 第4课
- JAVA内存区域与内存溢出相关设置
- 虚拟机centos7修改ip地址和hostname
- ssdt与shadowssdt区别
- B/S架构和C/S架构