Service详解(一):什么是Service
2016-04-08 16:01
459 查看
《 Service详解(一):什么是Service》
《 Service详解(二):Service生命周期》
《Service详解(三):Service的使用》
《Service详解(四):绑定服务 与 通信》
《Service详解(五):使用Messager进行通信》
《Service详解(六):进程间通信-AIDL》
Service是Android中常用组件之一,它是Android中实现程序后台运行的解决方案,它非常适合用于去执行那些不需要和用户交互且还要长期运行的任务。
这里的后台并不是子线程的意思,Service默认并不会运行在子线程中,它也不会运行在一个独立的进程中,它同样执行在UI线程中,因此,不要在Service中执行耗时的操作,如果需要执行耗时的操作,可以在Service中创建子线程来完成耗时操作。
Service的运行不依赖于任何用户界面,及时程序被切换到后台或者用户打开了另外一个应用程序,Service仍然能够保持正常运行,这也正式Service的使用场景。当某个应用程序进程被杀掉时,所有依赖于该进程的Service也会停止运行。
1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。
2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有!
上面的描述还是不够直观,要想真正理解Service与Thread的区别,我么要冲android的系统机制或者功能上来分析了。
首先Service是Context的子类,所以你可以在Service中调用Context的所有方法,同时你也可以在任何有Context的地方调用Context.startService、Context.stopService、Context.bindService,Context.unbindService,来控制它,你也可以在 Service 里注册 BroadcastReceiver,在其他地方通过发送 broadcast 来控制它,当然这些都是 Thread 做不到的。
更多关于Service与Thread的区别,等我们渐渐的学习Service之后,对Service有了全面的了解之后,我们就会深有体会了。
《 Service详解(二):Service生命周期》
《Service详解(三):Service的使用》
《Service详解(四):绑定服务 与 通信》
《Service详解(五):使用Messager进行通信》
《Service详解(六):进程间通信-AIDL》
Service是Android中常用组件之一,它是Android中实现程序后台运行的解决方案,它非常适合用于去执行那些不需要和用户交互且还要长期运行的任务。
这里的后台并不是子线程的意思,Service默认并不会运行在子线程中,它也不会运行在一个独立的进程中,它同样执行在UI线程中,因此,不要在Service中执行耗时的操作,如果需要执行耗时的操作,可以在Service中创建子线程来完成耗时操作。
Service的运行不依赖于任何用户界面,及时程序被切换到后台或者用户打开了另外一个应用程序,Service仍然能够保持正常运行,这也正式Service的使用场景。当某个应用程序进程被杀掉时,所有依赖于该进程的Service也会停止运行。
Service 与 Thread的区别
很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下。1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。
2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有!
上面的描述还是不够直观,要想真正理解Service与Thread的区别,我么要冲android的系统机制或者功能上来分析了。
首先Service是Context的子类,所以你可以在Service中调用Context的所有方法,同时你也可以在任何有Context的地方调用Context.startService、Context.stopService、Context.bindService,Context.unbindService,来控制它,你也可以在 Service 里注册 BroadcastReceiver,在其他地方通过发送 broadcast 来控制它,当然这些都是 Thread 做不到的。
更多关于Service与Thread的区别,等我们渐渐的学习Service之后,对Service有了全面的了解之后,我们就会深有体会了。
相关文章推荐
- java-模拟tomcat服务器
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题