简介
今天,我们来学习Service,首先了解下什么是Service
Service:勤劳的后台服务者
从字面意思上来看,Service就是服务,而且是后台运行的,在Android中很多辛苦的活都是Service干,但Service却没有Activity那么风光,系统顶多给它在下拉通知栏显示
我们平时用的一些音乐app在回到桌面或者锁屏后仍能播放音乐,这就是服务的作用,下面的我们来创建一个自己的服务。
创建项目
下面我们来试着创建一个Service
可以创建一个类然后继承Service(记得在AndroidMainfest.xml中注册)
也可以New > Service > Service(系统会自动帮我们在AndroidMainfest.xml中注册)
创建完成后就可以看到
MyService.java
public class MyService extends Service {
public MyService() {
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
里面有两个方法,一个是MyService的构造方法,一个是onBind方法(这个方法后面会详细分析)
AndroidMainfest.xml
<service
android:name=".MyService"
android:enabled="true"
android:exported="true"/>
这样,一个Service就创建完成了
回调方法
创建完成之后的Service还不可以用,我们还需重写它的一些回调方法,修改Service.java
public class MyService extends Service {
public MyService() {
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
这样,我们的Service就算正式完成了
启动一个服务
接下来我们试试启动这个Service
在主界面中放一个Button,并注册单击事件
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,MyService.class);
startService(intent);
}
});
可以看到启动Service所构建的Intent和Activity一样,只是启动所调用的方法不同
Activity:startActivity(intent)
Service:startService(intent)
其实Activity启动Service还有一种方式:BindService,这个是让Activity于Service绑定,这样Activity就可以从Service中读写数据,关于Service更多知识我们后面会慢慢分析。