Android Service

服务简介

service是一个可以在后台运行的运用组件,不依靠用户界面。它不是一个单独的进程,一般来说它和启动它的组件在同一个进程,除非申明process属性。它和不是一个单独的线程,所以如果需要做耗时操作,最好开启一个线程。服务是APP的重要组成部分,几乎所有的APP都能看到它的身影,它还是进程间通信(IPC)的桥梁。

一般情况下,服务有一下两种形式:

启动        启动的服务通过其他组件调用context.startService(),这种方式的服务启动后就和启动它的组件相互独立了,即使启动它的组件被销毁了,它也可以正常运行。

绑定        这样的服务是其他组件调用context.bindService()的服务。绑定的服务可以通过扩展BInder对象来让启动它的组件获取一个和Service进行数据交互的接口,这包括通过IPC来实现不同的进程间的数据交互。绑定的服务和启动它的组件共享生命周期,一个服务可以被多个组件同时绑定,当绑定它的组件都销毁的时候,它也将被销毁,当然这只是被绑定的情况。绑定和启动的形式是可以共存的,关于这种情况下的生命周期,下面再做详细描述

 

服务的生命周期方法

onCreate()                   在服务被创建的时候调用,整个生命周期只调用一次

onBind()                      当service被绑定的时候调用,一个服务可以被多个足见绑定,当时该方法在整个生命周期中只调用一次,如果该方法回调一个null对象的话,那么该service不会被绑定,该方法的返回的IBinder对象是实现IPC通讯的一个接口。

onStartComment()     在 service被启动的时候调用,每一次调用startService()该方法都会被调用,该方法有四种回调值,可以通过设置不同的回调值是服务具有不通的生命力

onUnbind()                   在service被解除绑定的时候调用,当绑定的service的组件被销毁的时候不会调用该方法

onDestroy()                 服务销毁的时候调用,service自己可以通过调用stopSelf(),其它组件可以通过调用stopService()来使服务被销毁,绑定的service不能通过stopSelf()或stopService()来使自己被销毁

 

各种状态下的service生命周期

启动      onCreate()--->onStartComment()--->(当服务被销毁的时候)onDestroy()

绑定      onCreate()--->onBind()--->(onUnbind()(该方法不一定会调用))--->onDestroy()

启动——>绑定    onCreate()--->onStartComment()--->onBind()--->onUnbind()--->onDestroy()。在先启动再绑定的情况下的服务不能在绑定后通过stopService()使服务直接被销毁,必须先解除绑定或者使绑定他的组件被销毁,如果是先调用了stopService()之后才被解除绑定的,那么在解除绑定后,service也会紧接着被销毁。在服务被绑定后直接解除绑定,service也不会被销毁。

绑定——>启动     onCreate()--->onBind()--->onStartComment()--->onUnbind()--->onDestroy()。

远程服务

远程服务就是不在一个进程的服务,可以使一个APP下的进程,也可以是多个APP的进程。远程服务通讯可以通过AIDL,或者Messenger的方式来实现

 

Android自带的服务

 

服务保活参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值