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

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

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属性表示是否启用这个服务。android

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

public MyService() {
}异步

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

}线程

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

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()在每次启动服务时都会调用资源

相关文章
相关标签/搜索