码农A:看见标题我就震惊了。
码农B:我也是。
码农C:我琢磨着,UC震惊部还缺人吗?这小编是个人才啊。
某小编:标题是震惊的,但内容是朴实无华的。
前言
Android四大组件:Activity、Service、BroadcastReceiver、ContentProvider。它们的作用分别是:
Activity--->配合View展示界面
Service--->长时间在后台运行不与用户直接交互
BroadcastReceiver--->接收广播
ContentProvider--->提供数据给其他模块使用
本篇文章着重分析Service,通过它,你将了解到:
1、Service 开启与停止
2、Service 执行耗时操作
3、Service 与Thread、Manager关系
4、Service 进程间通信初相识
1、Service 开启与停止
先定义一个Service类,名为MyService,继承自Service。
public class MyService extends Service {
public MyService() {
super();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
//必须重写该方法,该方法为抽象方法
//绑定开启Service会调用该方法
return null;
}
@Override
public void onCreate() {
//Service初次创建会调用该方法,我们可以做一些初始化操作, 与onDestroy()相对
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//每次显示启动Service都会调用该方法
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
//Service销毁时调用该方法,在该方法里我们可以做释放资源的操作,与onCreate()相对
super.onDestroy();
}
}
这是一个最简单的Service Demo。
接着想要使用该Service,还需要在AndroidManifest.xml里注册:
<service android:name=".service.MyService">
</service>
Service定义好了,怎么使用呢?开启Service有两种方式:
1、显示开启------> startService(Intent intent)
2、绑定开启------> bindService(Intent intent) 这俩都是Context里的方法
显示开启Service
构造Intent,传入startService(Intent intent)里。
private void startService() {
Intent intent = new Intent(this, MyService.class);
startService(intent);
}
通过此种方式,Service调用方法如下:
需要注意的点是:
当再次开启一个已经存在的Service的时候,onStartCommand(xx)依然会被调用。
显示关闭Service
显示开启Service后,Service就已经启动了。
若要关闭Service,通过如下方法: