service的概念:
官方定义:在后台长时间的操作,没有用户界面,不与用户进行交互,在默认的情况下,service运行在应用程序进程的主线程中,如果需要在Service中处理一些网络连接等耗时操作,那么应该将这些任务放到单独的线程中去处理,避免阻塞用户界面。
使用场景:音乐的播放,文件IO流操作,大数据的数据库操作,播放音乐。
1) 按home键,服务还在运行。
2) 退出进程,服务不在运行。
3) 服务不是新的进程,也不是新的线程,他是与当前进程绑定的。
服务的分类:
一:按照启动方式分:
1) started Service
1, startService()来启动Service
2, 一旦启动,就运行在后台,即便启动它的Activity已经销毁。
2) bound Service
1, bindService来启动Service
2, 提供服务器端,客户端接口来实现。
3, 发送请求,得到返回值,甚至通过IPC来实现通信。
二:按照服务性质来分:
1) local service--本地服务
2) Remote service--远程服务
三:按照实现方法来分:
1)java Service
2)native Service
服务的生命周期:
一,service在程序清单文件中的配置
2,service生命周期图:
启动service startService(intent);
停止Service stopService(intent);
服务中耗时操作也需要通过子线程去处理耗时操作。
备注:
1.Service不是一个单独的进程 ,它和应用程序在同一个进程中。
2.Service不是一个线程,所以我们应该避免在Service里面进行耗时的操作
如何停止Service中的线程???
一些连接:
service1 : http://blog.csdn.net/guolin_blog/article/details/11952435
service2 :http://blog.csdn.net/guolin_blog/article/details/9797169