Thread和Service应用场合的区别
2014-03-25 11:57
281 查看
Thread和Service的区别:
1)
Thread 是程序执行的最小单元,它是分配CPU的基本单位,可以用 Thread 来执行一些异步的操作。
如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的main 线程上。因此 Service不是线程!
2)
Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止Thread 或者Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该 Thread 的引用。另一方面,你没有办法在不同的 Activity 中对同一 Thread 进行控制。
而任何 Activity 都可以控制同一 Service,而系统也只会创建一个对应 Service 的实例。因此你可以把 Service 想象成一种消息服务,而你可以在任何有 Context 的地方调用 Context.startService、Context.stopService、Context.bindService,Context.unbindService,来控制它,你也可以在 Service 里注册 BroadcastReceiver,在其他地方通过发送 broadcast 来控制它,当然这些都是
Thread 做不到的。
3) Service组件主要有两个目的:后台运行和跨进程访问。service可以在android系统后台独立运行,线程是不可以。
4) Service类是可以供其他应用程序来调用这个Service的而Thread只是在本类中在使用,如果本类关闭 那么这个thread也就下岗了而Service类则不会.
Thread和Service的区别:
1)
Thread 是程序执行的最小单元,它是分配CPU的基本单位,可以用 Thread 来执行一些异步的操作。
如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的main 线程上。因此 Service不是线程!
2)
Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止Thread 或者Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该 Thread 的引用。另一方面,你没有办法在不同的 Activity 中对同一 Thread 进行控制。
而任何 Activity 都可以控制同一 Service,而系统也只会创建一个对应 Service 的实例。因此你可以把 Service 想象成一种消息服务,而你可以在任何有 Context 的地方调用 Context.startService、Context.stopService、Context.bindService,Context.unbindService,来控制它,你也可以在 Service 里注册 BroadcastReceiver,在其他地方通过发送 broadcast 来控制它,当然这些都是
Thread 做不到的。
3) Service组件主要有两个目的:后台运行和跨进程访问。service可以在android系统后台独立运行,线程是不可以。
4) Service类是可以供其他应用程序来调用这个Service的而Thread只是在本类中在使用,如果本类关闭 那么这个thread也就下岗了而Service类则不会.
相关文章推荐
- android AlertDialog自定义布局文件
- 专题1.1――Exchange2013部署前准备条件
- 安装setuptools
- 黑马程序员之笔记5---包
- 诊断与调优工具
- Context 与 getApplicationContext 应该在什么时候用
- android videoview播放视频
- PHP程序输出日历
- 你想要的,要你自己给自己
- java 时间的操作
- 软件测试方法小汇总
- vs2010源代码管理里找不到vss的问题
- Android中的JSON解析方式:json; Gson ; Fastjson
- 2014_03_25
- extjs form 取值 赋值 重置 1
- HDU 2795 Billboard(线段树:找到线段树中>=给定值的第一个元素位置 并 更新该点)
- 世界上超难找的药方
- MapReduce优化----优化方案着手点
- ORA-00913: 值过多
- ubuntu系统下创建软件桌面快捷方式