Android Handler使用大全
来源:互联网 发布:瑞典难民知乎 编辑:程序博客网 时间:2024/06/03 21:19
首先说一下Handler是如何传递数据的
1.他可以发送空的Message来传递数据,
handler1 = new Handler(){ public void handleMessage(android.os.Message msg) { tv.setText(msg.what+""); } };handler1.sendEmptyMessage(1);
- 通过Message来传递数据
handler2 = new Handler(){ public void handleMessage(android.os.Message msg) { switch (msg.arg1) { case 1: Bundle a=msg.getData(); String b=a.getString("shuchu"); tv.setText(b); break; default: break; } }; }; btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Message msg = handler2.obtainMessage(); Bundle bundle = new Bundle(); bundle.putString("shuchu", "Thread:" + Thread.currentThread().getId() + " activeCount:" + Thread.activeCount());// 将服务器返回的订单号传到Bundle中,,再通过handler传出 msg.setData(bundle); msg.arg1=1; handler2.sendMessage(msg); } });
3.我们知道handler能够切换线程,但是都是通过发送Message来完成,但是还可以使用post函数来切换线程,这个post换成其他控件可以使用
handler3 = new Handler(); class DownloadThread extends Thread{ @Override public void run() { try{ Thread.sleep(5000); Runnable runnable = new Runnable() { @Override public void run() { tv.setText("Handler还可以通过post命令来切换到自己所属线程"); } }; handler3.post(runnable); }catch (InterruptedException e){ e.printStackTrace(); } } } DownloadThread downloadThread = new DownloadThread(); downloadThread.start();
4.传递对象
handler4 = new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); if (msg.obj != null) { Drawable drawable = (Drawable) msg.obj; tv .setBackgroundDrawable(drawable); } } }; Drawable drawable = MainActivity.this.getDrawable(R.mipmap.ic_launcher); //1、实例化一个Message对象 Message message = Message.obtain(); //将图片流赋值给Message对象 message. obj = drawable; //定义标签 message. what = 0; //3、发送消息到主线程中的Handler handler4 .sendMessage(message);
5.他还可以延缓Message的发送
handler4.sendMessageDelayed(message,3000);
6.post函数也可以延缓
handler3.postDelayed(runnable,3000);
- 取消Message,为了防止Handler造成内存泄漏,就是占着对象使得对象的内存无法释放
handler1.removeCallbacksAndMessages(null); handler2.removeCallbacksAndMessages(null); handler1.removeCallbacksAndMessages(null); handler1.removeCallbacksAndMessages(null);
阅读全文
0 0
- 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的使用
- android笔记-Handler使用
- Android Handler的使用
- Android Handler的使用
- Android Handler使用总结
- Android Handler的使用
- CryptoJS简单使用
- android 4.3 调用 view.measure()时报空指针异常
- 十年后,程序员还会有今天的收入吗?
- SDUT-2804 数据结构实验之二叉树八:(中序后序)求二叉树的深度
- 使用 unbound 在 RHEL7 上搭建 DNS 服务
- Android Handler使用大全
- Spark本地开发环境scala版本
- c++操作MySQL数据库实例
- [YZOJ]P1232-异或游戏
- Object 类中的 equals方法
- 十一月一日课堂笔记
- java方法简单练习
- Sass技术问题与解决方法
- 设计模式——抽象工厂模式