`

Service 介绍

 
阅读更多

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) {

		}
	};

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics