Service

一、Service两种启动方式区别,

1、startService和bindService方式生命周期函数不同。

Service_第1张图片
service两种启动方式生命周期

onCreate()方法,在startService或者bindService方式首次启动时都会调用

onStartCommand(),bindeServce方式启动不调用,在starService方式启动时调用,不管service是否已处于开启状态每次都调用,返回值参数决定服务在被系统kill掉之后的恢复状况,返回值为START_NO_STICKY时,不主动恢复,START_STICKY主动恢复,Intent值不保存,START_REDELIVER_INTENT主动恢复,并主动传入启动service时传入的Intent参数。

onBinde(),onUnbind(),在bindService方式启动时调用,starService方式启动不调用;

onDestory(),服务不再使用且将会销毁时调用,两种启动方式都会调用。

2、starService之后,Service一直运行,除非被调用stopService或者自身调用stopSelf停止,client端与Service端无关联,不能调用服务内的方法,bindService方式启动,所有绑定改服务的客户端unBind之后,服务会销毁,client端可拿到service实例调用其方法。

二、线程与servie区别,IntentService

Thread是执行耗时操作的,service设计用来执行的后台任务的,所谓后台任务是指与UI无关的任务,其运行还是在主线程,跑耗时的任务还是要开线程来执行。

IntentService包含了一个后台线程跑耗时任务,当任务执行完后,IntentService 会自动停止,不需要我们去手动结束。如果启动 IntentService 多次,那么每一个耗时操作会以工作队列的方式在 IntentService 的 onHandleIntent 回调方法中执行,依次去执行,使用串行的方式,执行完自动结束。

你可能感兴趣的:(Service)