Service 介绍
Service和Activity是不同的,Acticity,显示图形用户界面,而Service是不可见的--如执行intent的查找,出来数据,更新ContentProvider,激活Intent和触发Notification。Activity在它的生命周期内定地启动,停止和重新创建,而service则设计为长的生命周期,它是用来执行一些持续的,可能耗时的操作。
?
Service的启动和停止,控制是通过其他应用程序来实现的,包括Activity,Broadcase Receive,其他Service。
运行中的Sercice具有比处于非激活的Service或者与不可见的(停止)的Activity要高的优先级,所以他被运行的是资源管理终止的机会要小点。
?
1.启动Service
要定义一个Service,需要创建一个扩展Service的新类。需要重写onCreate和onBind方法
?
public void MyService extends service{ @Override public void onCreate(){ super.onCreate; } @Override // 绑定service要实现onBind方法,对正在运行的Sverice进行发放调用 public IBinder onBind(Intent intent) { return binder; } }
?当创建service之后需要在清单文件中注册
?
2.执行一个Service并控制它的重新启动
@Override public int onStartCommand(Intent intent, int flags, int startId) { startBackgroundTask(intent,staartId); return super.onStartCommand(intent, flags, startId); }
?3.启动和停止Service
//用intent启动一个service Intent intent=new Intent(); intent.setClass(MainActivity.this, MyServece.class); this.startService(intent); //停止Service stopService(new Intent(this,MyService.class));
?4.将Service绑定要Activity
允许Service和Activity绑定,这样能够获得更加详细的接口。要让一个Service支持绑定,需要实现onBind方法,并返回被绑定的当前实列
@Override // 绑定service要实现onBind方法,对正在运行的Sverice进行发放调用 public IBinder onBind(Intent intent) { return binder; } class ControlBinder extends Binder { // 停止 public void pause() { player.pause(); } }
?Service和其他组件的连接表示为一个ServiceConnetion。
要想将一个Service与其他组件绑定,需要实现一个新的ServiceConnection,建立了一个连接后,就可以重写onServiceConnection和onServiceDisconnected方法获得对Service的实列的引用。
// 创建链接对象获得service的实例应用 public ServiceConnection conn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { binder = (ControlBinder) service; th.start(); } @Override public void onServiceDisconnected(ComponentName name) { } };
?
原文:http://hit-me.iteye.com/blog/2190486