Service是Android组件之一,它在后台工作,可以执行一些耗时工作而不提供界面。
Service能被其他应用程序启动,能与其他组件绑定(Broadcast除外),甚至能进行进程间通信(IPC)。
Service默认运行在当前应用程序的进程中,可以通过修改manifest.xml下的android:process覆盖默认进程,所以当需要用service来执行耗时操作的时候也需要开单独的线程来执行,否则应用程序很可能ANR(停止响应),因为是在应用程序的进程中,同样当应用程序被kill的时候,Service也被杀死;要避免被杀死可修改为远程Service,开启独立进程
Service分为两种基本类型:started,bound
Started:通过content.StartService(),启动后会一直运行在后台,直到宿主进程被杀死。实现很简单,只需要继承Service,实现onStartCommand();停止调用stopSelf()或者content.stopService();生命周期 onCreate()初次创建的时候调用,onStartCommand() onDestroy()
Bound:通过bindService()启动,当被绑定的组件销毁后,它也跟着销毁,绑定的时候;必须返回IBinder接口,以保证和客户端之间的通信?当用广播通信的时候,并不需要返回IBinder;bind的Service并不能通过stopService()来停止。