Android-14-Service(服务)

1.简介

Service (服务)是一个长期运行在后台的用户组件,没有用户界面。即使切换到另一个应用程序,服务也可以在后台运行,因此服务更适合执行一段时间而又不需要显示界面的后台操作,例如下载数据、播放音乐等。服务( Service )是Android中的四大组件之一,
Android-14-Service(服务)_第1张图片

在上述代码中,创建的MyService继承自Service,默认包含-个构造方法和一个onBind()方法。其中onBind()方法用于绑定服务,并返回一个IBinder对象,由于该方法刚创建尚未实现,因此抛出一个异常,在使用时将异常删除并返回一个IBinder对象即可。标签有3个属性,其中name属性表示服务的路径,enabled属性表示系统是否能够实例化该组件,exported 属性表示该服务是否能够被其他应用程序组件调用或交互。

2.服务的生命周期

服务的启动方式有两种,分别是startService()方法和bindService()方法。使用不同的方法启动服务,其生命周期也是不同的。

Android-14-Service(服务)_第2张图片Android-14-Service(服务)_第3张图片

3.服务启动方式

通过startService()方泛启动服务,服务会长期在后台运行,并且服务的状态与开启者的状态没有关系,即使启动服务的组件已经被销毁,服务也会依旧运行。

(1)startService方式启动

Android-14-Service(服务)_第4张图片

创建了一个Service的代码,在代码中重写了Service生命周期中的onCreate()、onStartCommand()和onDestroy()方法。

Activity中对应的方法

Android-14-Service(服务)_第5张图片

上述代码中,start和stop方法,是按钮绑定的点击事件的方法。

(2)bindService方式启动

当一个组件通过bindService()启动服务时,服务会与组件绑定。一个被绑定的服务提供一个客户端与服务器接口,允许组件与服务交互,发送请求,得到结果。多个组件可以绑定一个服务,当调用onUnbind()方法时,这个服务就会被销毁。bindService()方法的完整方法名为bindService(Intent service ,ServiceConnection conn, int flags),该方法的3个参数含义如下。
●Intent 对象用于指定要启动的Service。
●ServiceConnection 对象用于监听调用者与Service之间的连接状态。当调用者与Service连接成功时,将回调该对象的onServiceConnected(ComponentName name, IBinder service)方法。断开连接时,将回调该对象的onServiceDisconnected(ComponentName name)方法。
●flags指定绑定时是否自动创建Service(如果Service还未创建)。该参数可指定为0,即不自动创建,也可指定为“BIND_AUTO_ CREATE”,即自动创建。

创建一个Service类

Android-14-Service(服务)_第6张图片Android-14-Service(服务)_第7张图片

在MainActivity中编写页面交互代码,用于实现绑定服务、调用服务中的方法以及解绑服务.

Android-14-Service(服务)_第8张图片Android-14-Service(服务)_第9张图片

btnBind和btnUnbind和btnCall方法都是绑定按钮的点击onClick方法。

在上述代码中,通过bindService()方法绑定服务,然后通过btnCal()方法调用MyService类中的callMethodInService()方法完成与服务之间的交互,通过unbindService()方法解绑服务。在代码中创建MyConn类用于实现连接服务,当绑定服务成功时会调用onServiceConnected()方法,与服务失去连接时会调用onServiceDisconnected()方法。

当应用组件与服务绑定之后,服务的生命周期与组件同步,当组件销毁后服务也会随之解绑销毁。也就是说服务处于绑定状态后,直接关闭组件应用程序,系统会自动调用onUnbind()方法解绑服务。

4.服务的通信

 

 

 

 

 

你可能感兴趣的:(Android)