Android四大组件之服务
介绍:
服务(Service)是Android中的四大组件之一,它能够长期在后台运行且不提供用户界面。即使用户切到另一应用程序,服务仍可以在后台运行。例如,使用音乐播放器播放音乐,将音乐播放器切换到后台仍然可以播放音乐
服务的创建:
-
服务的创建方式与创建Activity类似,只需要继承Service类,然后在清单文件中注册即可。创建服务的代码如下所示:
public class MyService extends Service {
public IBinder onBind(Intent arg0) {
return null;
}
}
-
由于服务是Android四大组件之一,因此需要在清单文件中注册,具体代码如下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.servicetest"
android:versionCode="1"
android:versionName="1.0" >
…………
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
………… >
<!--在此注册服务信息-->
<service android:name="cn.itcast.servicetest.MyService"/>
</application>
</manifest>
-
至此,服务就创建成功了,需要注意的是,创建完服务之后,一定要在清单文件中注册,否则服务是不生效的。
服务的生命周期:
-
与其他组件不同的是,Service不能自己主动运行,需要调用相应的方法来启动。启动服务的方法有两个,分别是Context.startService()和Context.bindService()。使用不同的方法启动服务,服务的生命周期也会不同,接下来介绍下服务的生命周期。
1、startService方式开启服务的生命周期
服务会执行onCreate(), onStartCommand()方法,服务处于运行状态,直到自身调用stopSelf()方法或者其他组件调用stopService()方法时服务停止,最终被系统销毁。
服务会长期的在后台运行,并且服务的状态与开启者的状态没有关系。
2、bindService方式开启服务的生命周期
服务会执行onCreate(),onBind()方法,服务处于绑定状态, 客户端通过unbindService()方法关闭连接,解除绑定时,系统将直接销毁服务。
服务与开启者的状态有关,当调用者销毁了,服务也会被销毁。
服务的启动方式
启动服务有两种方式,分别是通过startService()方法和bindService()方法启动服务。接下来将针对这两种方式进行详细地讲解
1、start方式启动服务
首先学习下使用Context的startService()和stopService()方法来启动、关闭服务。使用startService()方式开启服务的具体代码如下所示:
Intent intent = new Intent(this, StartService.class);
Context.startService(intent); //开启服务
Context.stopService(intent); //关闭服务
2、bind方式启动服务
如果服务需要与调用者进行方法调用和数据交互时,应该使用bindService()和unbindService()启动、关闭服务。
接下来通过一段示例代码来学习使用bindService()和unbindService()方法开启、关闭服务,具体代码如下所示:
Intent intent = new Intent(this, MyService.class);
private class MyConn implements ServiceConnection {
public void onServiceConnected(ComponentName name, IBinder service) {
MyBinder myBinder = (MyBinder) service;
}
public void onServiceDisconnected(ComponentName name) {
}
}
MyConn myconn = new MyConn();
bindService(intent, myconn, BIND_AUTO_CREATE);
unbindService(myconn);