Thread与service
2014-02-26 09:37
134 查看
对Service了解后,会发现它实现的大部分功能使用Thread也可以解决,并且Thread使用起来比Service方便的多,那么为什么还需要使用Service呢,下面来详细解释一下。
首先,Thread是程序执行的最小单元,它是分配系统资源的基本单位,主要用于执行一些异步的操作。而Service是Android的一种机制,当它使用bindService()被绑定的时候,是运行在宿主主进程的主线程上的,当使用startService()启动服务的时候,是独立运行在独立进程的主线程上的,因此它们的核心没有任何关系。
其次,对于Thread而言,它是独立于启动它的组件的,如使用一个Activity启动了一个Thread,当这个Activity被销毁前,没有主动停止Thread或者Thread的run()方法没有执行完毕的话,Thread也会一直执行下去,这样就很容易导致一些问题,当这个Activity被销毁之后,将不再持有这个Thread的引用,也就是说,无法再在另外一个Activity中对同一个Thread进行控制。而Service不同,在Android系统中,无论启动或绑定几次,只会创建一个对应的Service实例,所以只要这个Service在运行,就可以在能获取到Context对象的地方控制它,这些特点是Thread无法做到的。
首先,Thread是程序执行的最小单元,它是分配系统资源的基本单位,主要用于执行一些异步的操作。而Service是Android的一种机制,当它使用bindService()被绑定的时候,是运行在宿主主进程的主线程上的,当使用startService()启动服务的时候,是独立运行在独立进程的主线程上的,因此它们的核心没有任何关系。
其次,对于Thread而言,它是独立于启动它的组件的,如使用一个Activity启动了一个Thread,当这个Activity被销毁前,没有主动停止Thread或者Thread的run()方法没有执行完毕的话,Thread也会一直执行下去,这样就很容易导致一些问题,当这个Activity被销毁之后,将不再持有这个Thread的引用,也就是说,无法再在另外一个Activity中对同一个Thread进行控制。而Service不同,在Android系统中,无论启动或绑定几次,只会创建一个对应的Service实例,所以只要这个Service在运行,就可以在能获取到Context对象的地方控制它,这些特点是Thread无法做到的。
相关文章推荐
- IOS字体设置和颜色设置
- ACM-DFS之Tempter of the Bone——hdu1010
- 分页存储过程 方一
- c# 窗口句柄有关的常见问题
- vs2008不能输入CDKEY解决方法
- Mysql 存储过程和函数区别
- iOS- <项目笔记>iOS6 & iOS7屏幕图片适配
- navigationbar
- javascript 获取form表单中radio选中值
- [贪心]UVA1037 Magic Coupon
- Linux查看文件编码格式及文件编码转换
- Ext.Net学习笔记22:Ext.Net Tree 用法详解
- Linux查看文件编码格式及文件编码转换
- 如何找回丢失的数码照片
- Ogre:Animation(Ogre中的动画)
- 详解大端模式和小端模式
- Ext.Net学习笔记21:Ext.Net FormPanel 字段验证(validation)
- 几种数据同步共享方法
- ios--屏幕旋转
- poj2579