安卓中线程和服务的区别?
一、安卓中线程和服务的区别
1.服务不是单一的进程
服务不是单一的进程。服务没有自己的进程,应用程序可以不同,服务运行在相同的进程中。
2. 服务不是线程,可以在线程中工作
服务不是线程??梢栽谙叱讨泄ぷ鳌?/p>
在应用中,如果是长时间的在后台运行,而且不需要交互的情况下,使用服务。
同样是在后台运行,不需要交互的情况下,如果只是完成某个任务,之后就不需要运行,而且可能是多个任务,需需要长时间运行的情况下使用线程。
如果任务占用CPU时间多,资源大的情况下,要使用线程。
Service其实就是一个没有界面的Activity,因此不能做长时间阻塞,ThreadService可以做阻塞,因为它是异步的。
Thread不能更新UI因为他自己本身已经脱离了UI线程,不存在Handler以及Message队列,但是Service系统会像Activity一样,将其绑定到UI线程上
延伸阅读:
二、Service的分类
对一个安卓服务(Android Service)来说,通常是要么将其作为已启动的服务(Started Service),要么将其作为已被绑定的服务(Bound Service)。
1、Started Service
已启动的服务(Started Service)是指被同一个应用程序的某个对象显式启动,或者在设备引导时就启动了(配置了服务的情况)。通常情况下,已启动的服务在操作系统或服务自身显式调用停止服务之前一直在运行。
2、Bound Service
被绑定的服务(Bound Service)提供直接链接到应用程序中特定的Service。它使用一个Binder提供对Service的引用,这样一来,应用程序就可以直接访问Service中的成员了。一般在同一个应用程序(通常是一个Activity)中的客户端启动时绑定到该Service,导致Android启动该服务,在客户端连接或绑定到它以后,安卓系统会保持被绑定的服务一直运行。当所有客户端断开连接或取消绑定时,Android才会停止该服务。
3、Hybrid Service
也可以将Started Service和Bound Service这两种服务混合在一起,称为混合式服务(Hybrid Service)。即:先显式启动某个服务,然后再绑定到该服务。这种方式的好处是也给别的应用程序提供了一个利用服务做其他事情的机会?;痪浠八担灰鸬挠τ贸绦蛄拥礁梅?,就可以直接访问它。
混合式服务的办法非常有用,使用也非常普遍。比如说,我们正在编写一个在徒步旅行时跟踪运动位置的应用程序,我们可能想要不断地记录位置以便以后使用,但仅在需要屏幕显示时才去显示特定的位置信息。在这种情况下,当应用程序运行时,仅仅在客户端某一个Activity在前台运行的时候才可能会启动这个服务。该Activity绑定到该服务以后,就可以获取位置信息,但是,即使该Activity取消和这个服务的绑定,该服务仍能继续运行。换言之,混合服务(Hybrid Service)一旦启动起来就会一直运行,直到它被显式停止和没有客户端绑定到它才会关闭它,或者直到系统因为内存不够用时才会关闭它。
以上就是关于安卓中线程和服务的区别的内容希望对大家有帮助。

相关推荐HOT
更多>>
B+树查询的稳定性为什么重要?
一、B+树查询的稳定性为什么重要首先最大的优势还是磁盘IO和范围,从我个人的看法看,稳定性(每次查询必须从根走到叶子节点)这意味行为可预估...详情>>
2023-10-14 17:40:38
进程如何找到pgd页表,页表的数据结构是什么?
一、进程找到pgd页表的方法在Linux内核中,每个进程都有一个指向其PGD的指针pgd,该指针位于进程描述符结构体(task_struct)中。进程可以通过...详情>>
2023-10-14 17:24:21
什么是单链表就地逆置?
一、什么是单链表就地逆置单链表就地逆置是一种常见的链表操作,它通过调整链表节点之间的指针关系,将单链表中的元素原地进行逆序排列。这种操...详情>>
2023-10-14 16:35:41
散列表为什么可以在O(1)时间复杂度内查找散列值?
一、散列表为什么可以在O(1)时间复杂度内查找散列值因为哈希函数的功能就是完成键到哈希值的映射,映射到的哈希值就是一个数字,被用来当作数组...详情>>
2023-10-14 16:20:29热门推荐
技术干货






