Service的初步理解
经过几天的学习,感觉Service相对来说有点难学,目前通过视频和看android文档,对Service的重点总结一下:
Service
是一个应用程序组件,它能够在后台执行一些耗时较长的操作,并且不提供用户界面。服务能被其它应用程序的组件启动,即使用户切换到另外的应用时还能保持后台运行。此外,应用程序组件还能与服务绑定,并与服务进行交互,甚至能进行进程间通信。 比如,服务可以处理网络传输、音乐播放、执行文件I/O、或者与content provider进行交互,所有这些都是后台进行的。
服务有以下两种基本类型:
started:调用
startService()来启动服务,通常,started的服务执行单一的操作并且不会向调用者返回结果。比如,它可以通过网络下载或上传文件。当操作完成后,服务应该自行终止。
bound:调用
bindService()绑定到服务上,bound服务提供了一个客户端/服务器接口,允许组件与服务进行交互、发送请求、获取结果,甚至可以利用进程间通信跨进程执行这些操作。绑定服务的生存期和被绑定的应用程序组件一致。 多个组件可以同时与一个服务绑定,不过所有的组件解除绑定后,服务也就会被销毁。
1、区别Service与Activity:
1)Activity:
Activity对应一个界面。
应用退出,Activity对象就会死亡。
应用再次进入,启动的Activity对象是重新创建的。
2)Service
不与任何界面关联。
应用退出,Service仍在运行。
应用再次进入,启动的Service还是前面运行的Service对象。
2 、区别Service与Thread
1)Thread
用来开启一个分线程的类,做一个长时间的工作。
Thread对象的run()在分线程执行。
应用退出:Thread不会停止。
应用再次进入:不能再控制前面启动的Thread对象。
2)Service
用来在后台完成一个时间跨度比较大的工作的应用组件。
Service的生命周期运行在主线程,如果Service想做持续时间比较长的工作,需要启动一个分线程(Thread)。
应用退出:service不会停止。
应用再次进入:可以与正在运行的Service进行通信。
3、Service的生命周期
![](http://47.94.240.113/upload/2017/07/61h01nm156j05qg5tpp1tke0c3.png)