Handler在多线程中使用Thread.start()和Handler.post()的区别
2016-03-05 15:07
387 查看
到目前为止,我知道的Handler是用来将耗时较大的任务放在另一个线程中进行的,可以使用Handler.post(r)来调用一个runnable对象,但是经过测试,
这时的handler和activity是在同一个线程,
而使用Thread.start()方法,来启动runnable对象的话,则handler与activity是处在不同的线程中的.
所以一般使用HandlerThread这个类,来使handler与activity的线程分开.
测试的代码如下:
还在初学阶段,若文章有误,麻烦在评论区告知.谢谢了.
这时的handler和activity是在同一个线程,
而使用Thread.start()方法,来启动runnable对象的话,则handler与activity是处在不同的线程中的.
所以一般使用HandlerThread这个类,来使handler与activity的线程分开.
测试的代码如下:
package org.superzhao.threadrunnable; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.util.Log; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); handler.post(r); //Thread thread = new Thread(r); //thread.start(); setContentView(R.layout.activity_main); Log.d("activity", Thread.currentThread().getId() + ""); } Handler handler = new Handler(); Runnable r = new Runnable() { @Override public void run() { try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } Log.d("Handler",Thread.currentThread().getId() + ""); } }; }
还在初学阶段,若文章有误,麻烦在评论区告知.谢谢了.
相关文章推荐
- ELK(三)安装Kibana
- [Git] warning:LF will be replaced by CRLF
- JAVA四大域对象总结
- 单链表类成员函数现代写法、传统写法
- 51nod 1088 最长回文子串
- jquery设置元素成为disabled
- Java之Hessenberg矩阵
- 关于在tomcat中点击startup.bat cmd一闪而过的原因以及分析这个问题的方法
- net 服务端接口 存储,发送 app短信验证码
- 编程问题之:x=x&(x-1)
- 集合
- 8、Hadoop分布式文件系统
- 集群和分布式区别理解
- cache和主存的三种映射方式
- Apache Commons Mail 初步
- Ubuntu 14.04下安装ffmpeg
- 具体解说Android的图片下载框架UniversialImageLoader之磁盘缓存的扩展(二)
- Android-自己定义显示价格的PriceView
- HDU 5015 233 Matrix
- calibre的recipe接口(API)之——参数设置