“21天好习惯” 第一期 -2 Android Service初识

一、Service是什么

        Service同样也是Android四大组件之一。Android Service服务的最主要特点在于后台工作不直接跟用户直接交互,为应用程序提供数据和运算。

        Service(服务)主要完成两件主要的事情,分别是:1、完成后台 数据的准备和运算,完成周期性的更新操作。2、完成进程间的通信。

二、Service的两种形式

      1、启动型(Started)

        表示应用程序中的组件调用StartService方法后运行的服务,当服务启动后就会在后台运行,即使开启此服务的组件已经结束了。通常情况下,启动型服务适合完成一项专门的工作,并且不返回任何的结果数据给调用者。

        首次启动会创建一个Service实例,依次调用onCreate()和onStartCommand()方法,此时Service 进入运行状态,如果再次调用StartService启动Service,将不会再创建新的Service对象, 系统会直接复用前面创建的Service对象,调用它的onStartCommand()方法。
        ②但这样的Service与它的调用者无必然的联系,就是说当调用者结束了自己的生命周期, 但是只要不调用stopService,那么Service还是会继续运行的。
        ③无论启动了多少次Service,只需调用一次StopService即可停掉Service。

        2、绑定型(Bound)

        表示服务是由bindService方法调用后启动的,它主要提供服务器,客户端接口允许组件与服务进行交互,发送请求,获取结果,甚至通过跨进程调用进行数据交互,绑定型仅仅在有其它的应用组件与它绑定的时候运行,另外,它也允许多个组件同时绑定到此服务上,当组件跟绑定型服务取消绑定的时候,此服务就会终止。

        当首次使用bindService绑定一个Service时,系统会实例化一个Service实例,并调用其onCreate()和onBind()方法,然后调用者就可以通过IBinder和Service进行交互了,此后如果再次使用bindService绑定Service,系统不会创建新的Sevice实例,也不会再调用onBind()方法,只会直接把IBinder对象传递给其他后来增加的客户端!
        ②如果我们解除与服务的绑定,只需调用unbindService(),此时onUnbind和onDestory方法将会被调用!这是一个客户端的情况,假如是多个客户端绑定同一个Service的话,情况如下 当一个客户完成和service之间的互动后,它调用 unbindService() 方法来解除绑定。当所有的客户端都和service解除绑定后,系统会销毁service。(除非service也被startService()方法开启)
        ③另外,和上面那张情况不同,bindService模式下的Service是与调用者相互关联的,可以理解为 "一条绳子上的蚂蚱",要死一起死,在bindService后,一旦调用者销毁,那么Service也立即终止。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值