暴走吧小草莓

导航

Android四大组件之 --- Service入门

在前面了解了什么是多线程和异步消息处理机制后,我们来看一下到底什么是Service。

1. 什么是service(service的作用)
一个服务是一个具有较长生命周期但没有用户界面的程序,例如:一个正在从播放列表中播放歌曲的媒体播放器在后台运行
service用于在后台完成用户指定的操作,一般不需要与用户交互
2. 分类
service分为两种:
started(启动):当应用程序组件(如activity)调用startService方法启动服务时,服务处于started状态
bound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态
3. 注意,service也是需要在配置文件中(比如AndroidManifest.xml)注册的,例如
<service
android:name=".MyService"
android:enabled="true"
android:exported="true"></service>
4.定义一个service(如何在项目中定义一个服务)
新建一个ServiceTest项目,然后右击com.example.servicetest→New→Service→Service,在弹出的创建服务
窗口中,Exported属性表示是否允许除了当前程序之外的其他程序访问该服务,enabled属性表示是否启用这个服务。

MyService.java中的代码:
public class MyService extends Service {

public MyService() {
}

@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}

}

MyService继承自Service类,所以也是一个服务。onBind()方法是Service中唯一一个抽象方法,所以必须在子类
里实现。
重写Service中的一些其他方法
public class MyService extends Service {

public MyService() {
}

@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}
//onCreate(), onStartCommand(),onDestory()是服务中最常用的3个方法
//onCreate()会在服务创建时调用
@Override
public void onCreate() {
super.onCreate();
}
//onStartCommand()在每次服务启动时调用,如果我们希望服务一旦启动就执行某个action,就可以将逻辑写在
//onStartCommand()方法里面
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
//onDestory()在服务销毁时调用,在服务销毁时,我们要在onDestory()中回收那些不再使用的资源
@Override
public void onDestroy() {
super.onDestroy();
}

}
onCreate()和onStartCommand()的区别:
onCreate()在服务第一次创建时调用
onStartCommand()在每次启动服务时都会调用

posted on 2018-01-20 14:24  暴走吧小草莓  阅读(143)  评论(0编辑  收藏  举报