Service是Android中第二大基本组件,它通Activity一样也有属于自己的生命周期和方法。要知道如何使用使用service,首先要知道什么是什么是service,有什么功能还有就是什么时候使用它。
1.service概念:它就是服务的意思。Service是一个没有用户界面的在后台执行耗时操作的应用组件。它与Activity不同,不能与用户进行交互,不能自己启动,是运行在后台的程序,如果我们退出应用时,service进程并没有结束,它仍然在后台运行。
2.Service主要用于两个目的:后台运行和跨进程访问。通过启动一个服务,可以在不显示界面的前提下在后台运行指定的任务,这样可以不影响用户做其他事情。通过AIDL服务可以实现不同进程之间的通信。Service默认是运行在应用的主线程中的,如果需要在Service中做耗时操作,需要在Service中启动线程来处理。
3.何时用到service呢?Service和其他组件一样,都是运行在主线程中,因此不能用它来做耗时的请求或者动作,可以在服务中开一个线程,在线程中做耗时的操作。例如当我们播放音乐的时候,也许我们想边听音乐边做一些其他的事情,这时候我们就要用到service,这样即使我们退出播放音乐的应用,但service并没有结束,我们仍能听到音乐。又比如一个应用的数据需要通过网络来获取,不同时间获取到的数据时不同的,这时候我们可以通过service在后台定时更新,而不用每次打开应用的时候去获取。
4.Service生命周期:并不像Activity的生命周期那样复杂,只有onCreat()onStart()onDestroy()三个方法。
5.Service的两种启动方式:
①Context.startService():service会经过onCreat,onStartCommand,Context.stopService的时候或者Service自己stopSelfResult()时,Service直接onDestroy()。如果是调用者自己直接退出而没有onStopService,Service会一直在后台运行,下次调用者启动时可以StopService()。
②Context.bindService():当Service的调用者bindService时,如果Service没有被创建,Service先会onCreat()再onBind();多个调用者可以绑定到一个Service中;当调用者执行unBindService()方法时,Service就会调用onUnBind,onDestroy,但是如果还有其他服务绑定了该service,就不会调用onDestroy方法。所谓的绑定就是Service和调用方共存亡。