Service 与 Thread 的区别

Service 是android的一种机制,如果是Local Service,那么对应的 Service 是运行在主进程的 main
线程上的。

如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。

因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有! 

那么我们为什么要用
Service 呢?

其实这跟 android 的系统机制有关,我们先拿 Thread 来说。Thread 的运行是独立于 Activity 的,也就是说当一个
Activity 被 finish 之后,

如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。

因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该 Thread 的引用。另一方面,你没有办法在不同的
Activity 中对同一 Thread 进行控制。 

举个例子:如果你的 Thread
需要不停地隔一段时间就要连接服务器做某种同步的话,该 Thread 需要在 Activity 没有start的时候也在运行。

这个时候当你 start 一个 Activity 就没有办法在该 Activity 里面控制之前创建的
Thread。因此你便需要创建并启动一个 Service ,在 Service 里面创建、运行并控制该 Thread,

这样便解决了该问题(因为任何 Activity 都可以控制同一 Service,而系统也只会创建一个对应 Service
的实例)。 

因此你可以把 Service 想象成一种消息服务,而你可以在任何有 Context 的地方调用
Context.startService、Context.stopService、
Context.bindService,Context.unbindService来控制它,

你也可以在 Service 里注册 BroadcastReceiver,在其他地方通过发送 broadcast 来控制它,这些都是
Thread 做不到的。

Service 与 Thread 的区别,布布扣,bubuko.com

时间: 2024-10-22 16:46:47

Service 与 Thread 的区别的相关文章

Service与Thread的区别

不知道大家有没有和我一样的疑惑,在学习Android Service的时候,发现它和Thread很像.虽然,教程中一再强调,Service不是Thread,但是用了好久也没有发现他们的区别,在很多地方,都错误的使用Thread来代替Service去工作.但时间长了,发现Service和Thread区别很大,跟确切的说,他们不是一个东西!    1.Service 是android的一种机制Service 是运行在主进程的 main 线程上的.而Thread顾名思义会开辟一个线程去执行它是分配CP

Android 学习开发笔记《Service 与 Thread 的区别 》

很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下. 1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位.可以用 Thread 来执行一些异步的操作. 2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的.如:onCreat

Android中的Service 与 Thread 的区别[转]

很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下. 1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位.可以用 Thread 来执行一些异步的操作. 2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的.如:onCreat

Android中Service与Thread的区别

很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下. 1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位.可以用 Thread 来执行一些异步的操作. 2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的.如:onCreat

Service与Thread区别

servie是系统的组件,它由系统进程托管(servicemanager):它们之间的通信类似于client和server,是一种轻量级的ipc通信,这种通信的载体是binder,它是在linux层交换信息的一种ipc.而thread是由本应用程序托管. 1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位.可以用 Thread 来执行一些异步的操作. 2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service

android-Service和Thread的区别

1.服务不是单一的进程.服务没有自己的进程,应用程序可以不同,服务运行在相同的进程中. 2.服务不是线程.可以在线程中工作. 一.在应用中,如果是长时间的在后台运行,而且不需要交互的情况下,使用服务. 同样是在后台运行,不需要交互的情况下,如果只是完成某个任务,之后就不需要运行,而且可能是多个任务,需需要长时间运行的情况下使用线程. 二.如果任务占用CPU时间多,资源大的情况下,要使用线程. servie是系统的组件,它由系统进程托管(servicemanager):它们之间的通信类似于clie

Android开发实践:使用Service还是Thread

Service是Android的四大组件之一,被用来执行长时间的后台任务,同样,线程也可以实现在后台执行任务,它们的区别在哪呢?何时使用Service何时使用Thread呢?今天我也来说说我的理解和总结. 首先,需要了解Service的几个特点. (1) 默认情况下,Service其实是运行在主线程中的,如果需要执行复杂耗时的操作,必须在Service中再创建一个Thread来执行任务. (2) Service的优先级高于后台挂起的Activity,当然,也高于Activity所创建的Threa

转--Android开发实践:使用Service还是Thread

转自:http://ticktick.blog.51cto.com/823160/1547032 Service是Android的四大组件之一,被用来执行长时间的后台任务,同样,线程也可以实现在后台执行任务,它们的区别在哪呢?何时使用Service何时使用Thread呢?今天我也来说说我的理解和总结. 首先,需要了解Service的几个特点. (1) 默认情况下,Service其实是运行在主线程中的,如果需要执行复杂耗时的操作,必须在Service中再创建一个Thread来执行任务. (2) S

开发实践:使用Service还是Thread

谈到Android的开发必然会涉及到Android开发的四大组件(Activities .Services.Content providers.Broadcast receivers),而Service是Android的四大组件之一,被用来执行长时间的后台任务,同样,线程也可以实现在后台执行任务,它们的区别在哪呢?何时使用Service何时使用Thread呢?今天我也来说说我的理解和总结,你可以观看Android开发教程了解. 首先,需要了解Service的几个特点: (1) 默认情况下,Ser