Android四大组件之Service

    Service,服务,是一种需要长期后台运行的进程,例如,数据的更新,定时的轮询,监视硬件的插入等
  一、简介
    	Service是一种中生命周期比较长的组件,没有界面不与用户交互;长期运行在后台执行与界面无关
操作;与Thread类似,但是使用线程不安全;最重要的一点是Service也是运行在主线程的,不能做耗
    时的操作
  二、详解
      1.首先了解一下Android中的线程知识
	线程由高到低为:前台-可视-服务-后台-空进程
	线程的回收是从低到高的,当内存不足时,会先从空进程开始从低到高回收;服务的级别是比较高的
     一般情况下不会被回收,一旦被回收,那么在内存充足时,系统会自动启动被回收掉的服务
      2.如何使用
	创建类继承Service,并且在清单文件中配置service节点
	开启服务
      3.生命周期
	Started Service标准模式开启
	    其他组件调用startService方法开启,这种Service可以无限制运行下去,除非调用stopSelf方
	  法或者其他组件调用stopService方法,但是只能被停止一次
	BoundService绑定服务
	    调用者用bindService方法绑定服务,调用者通过一个IBinder接口和service通信,调用者也可
	  用unBindService方法解除绑定;一个Service也可和多个用户进行绑定,所有用户解除绑定后才会
	  销毁service
	  bindService(service, serviceConnection, BIND_AUTO_CREATE);
		一旦绑定成功后,服务内部的onBind方法执行,并且只执行一次,再次绑定不执行
		serviceConnection参数:ServiceConnection的对象,要重写onServiceConnected,绑
				      定成功后执行此方法,方法中的IBinder接收onBind返回的数据
		BIND_AUTO_CREATE:如果绑定的服务不存在那么创建出来
				
	混合模式
	    先用startService方式开启,然后绑定服务,这时,单纯的stopService和stopSelf方法关闭
	  不了服务,除非所有用户都解绑才可以关闭
	    使用混合模式要严格遵守以下步骤
		start()开启服务
		bind()绑定服务
		unbind()解除绑定
		stop方式停止服务
      4.两种开启方式区别
	不同一
	 start()开启后服务与开启者无任何关系,调用者退出后,service也会继续执行
	 bindService()开启后,调用者退出service也会退出(非正常退出),可以在onDestory中解除绑定
	不同二
	 bingService开启服务后可以调用service中的方法,而start不能
      5.绑定服务步骤
	编写服务代码
		public IBinder onBind(Intent intent){}
	服务内部定义代理人对象MyBinder
		代理人对象中有一个方法可以调用服务内部的方法
	onBind方法中返回代理人对象
	在activity中采用绑定服务的方法
		
bindService(service, serviceConnection, BIND_AUTO_CREATE);
	ServiceConnection中一个实现类获取返回的代理人MyBinder对象
		public void onServiceConnected(ComponentName name,IBinder service){}
	强制类型转换IBinder为MyBinder
		mybinder=(MyBinder)service
	通过mybinder调用服务中的方法
      6.服务分类
	本地服务:服务在当前应用程序内部
	远程服务:服务在其他应用程序
	  绑定远程服务方法
	  a.代码编写与绑定本地服务一样
	  b.远程服务的接口定义文件.java-->.aidl
	  c.接口定义文件中的访问修饰符全删掉public private
	  d.原来代理人MyBinder extends Binder implements Iservice --->extends IService.Stub
	  e.把远程服务的aidl文件拷在本地,目录名要一致
	  f.iservice = IService.Stub.asInterface(service)得到远程服务对象
	  g.调用远程服务中方法
   三、小结
	学的东西很多,短时间内不能很好的理解,动手写博客的时候无从下手,看着笔记一点一点的回忆,
     开始做项目,用的也是一些基本的service知识
	预习--总结--复习--回顾
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章