1、Service的定义及作用
Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件
1.1、作用例子:
- 播放音乐
- 下载
即使如此也要记住他依然是运行在主线程的东西,他依赖于进程,进程关闭,他也随着关闭
2、启动方式和生命周期
2.1、bindService-交互任务
当应用组件通过调用 bindService() 绑定到服务时,服务即处于“绑定”状态。绑定服务提供了一个客户端-服务器接口,允许组件与服务进行交互、发送请求、获取结果,甚至是利用进程间通信 (IPC) 跨进程执行这些操作。 仅当与另一个应用组件绑定时,绑定服务才会运行。 多个组件可以同时绑定到该服务,但全部取消绑定后,该服务即会被销毁
2.2、startService-计算任务
当应用组件(如 Activity)通过调用 startService() 启动服务时,服务即处于“启动”状态。一旦启动,服务即可在后台无限期运行,即使启动服务的组件已被销毁也不受影响,除非手动调用才能停止服务, 已启动的服务通常是执行单一操作,而且不会将结果返回给调用方
3、 启动服务与绑定服务间的转换问题
根据Android的系统机制,如果你同时用着两种方式启动、绑定了一个service,那么他就会一直处于运行状态
所以必须要以上两种状态同时不满足,也就是要同时调用stopService和unbindService,onDestroy()方法才能执行
4、Service与Thread的区别
进程是系统最小资源分配单位,而线程是则是最小的执行单位,线程需要的资源通过它所在的进程获取
- Thread:Thread 是程序执行的最小单元,可以用 Thread 来执行一些异步的操作
- Service:android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上
5. IntentService Thread+Service=执行后台耗时任务
6、如何保证服务不被杀死
这个都可以做成专栏写了
参考1. 关于Android Service真正的完全详解,你需要知道的一切