Handler使用总结
来源:互联网 发布:古天乐演技 知乎 编辑:程序博客网 时间:2024/06/15 17:23
大家都知道,在UI线程里是给你进行耗时操作的,但是我们要更新UI怎么办,所以一对好基友就出现了,Handler+thread.放代码了.
public class MainActivity extends AppCompatActivity { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //这里可以使用postDelayed方法,不过它只是单纯执行runnable里的run方法,所以还是在主线程中.不过它有定时功能. /*handler.postDelayed(new Runnable() { @Override public void run() { } }, 1000*10);*/ textView = (TextView) findViewById(R.id.textView2); } public void downloadClick(View view){ new Thread(new Runnable() { @Override public void run() { while(true){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); handler.sendEmptyMessage(100); Message msg = handler.obtainMessage(); msg.what = 100; //msg.obj = R.color.colorAccent;//everything handler.sendMessage(msg); handler.sendEmptyMessageAtTime(200, System.currentTimeMillis()+3000);//time handler.sendEmptyMessageDelayed(300, 2000);//delayed } //定义一个内部类的时候,会默认拥有外部类对象的引用,所以建议使用内部类时,最好定义为一个静态内部类 private MyHandler handler = new MyHandler(this); private static class MyHandler extends Handler{ WeakReference<MainActivity> weakReference;//使用弱引用,避免内存泄漏 public MyHandler(MainActivity activity){ weakReference = new WeakReference<MainActivity>(activity); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); MainActivity activity = weakReference.get(); if(activity != null){ switch (msg.what){ case 100: activity.textView.setText("yes!"); Toast.makeText(activity, "dfs", Toast.LENGTH_SHORT).show(); break; case 200: activity.textView.setText("yes!"); Toast.makeText(activity, "gdf", Toast.LENGTH_SHORT).show(); break; case 300: activity.textView.setText("yes!"); Toast.makeText(activity, "dgd", Toast.LENGTH_SHORT).show(); break; default: break; } } } }}注:一般如果你有很多线程要返回一系列值的话,最好将handler单独封装成一个类,作为任务分发者,协调处理所有耗时操作.
阅读全文
0 0
- android handler使用总结
- Handler使用总结
- Android Handler使用总结
- Handler使用总结
- Handler 使用学习总结
- Android handler使用总结
- Handler的使用总结
- Handler使用总结
- android中handler使用总结
- No.2 Handler使用总结
- Android中Handler使用总结
- Android的Handler使用总结
- Android-Handler 总结(Handler 的使用 ,Looper , MessageQueue , HandlerThread )
- Android-Handler 总结(Handler 的使用 ,Looper , MessageQueue , HandlerThread )
- 消息传递机制之Handler使用总结
- Handler总结
- Handler总结
- Handler总结
- 座右铭
- 进程控制-wait()和waitpid()函数
- springmvc简单配置及测试
- 指针与内存管理初步
- 遍历二叉查找树
- Handler使用总结
- MySQL学习笔记-安装和基本操作
- 杭电水题2000 ( ASCII码排序 )
- 聊聊NSURLSession
- linux常用命令之连接mysql
- java 栈空间 和 堆空间
- Storm实战常见问题及解决方案
- Dubbo之——Dubbo 注册中心集群Zookeeper-3.4.9的安装、 配置
- BZOJ 3142: [Hnoi2013]数列