Android四大组件之Service

原创 2015年11月19日 22:30:10
    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知识
	预习--总结--复习--回顾
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android 四大组件之Service的Demo

  • 2015年12月18日 14:11
  • 7.14MB
  • 下载

Android四大组件--Service,后台播放背景音乐

MainActivity.Java package com.example.week5_day1_servicebind; import com.example.week5_day1_servic...

Android四大组件之Service(二)

Android四大组件之Service(二) 上一篇博客讲了Service通信,但是之前的是外部到内部的通信,也就是MainActivity到Service。这一篇呢,我们来讲一下内部到外部的通信s...

Android四大组件之Service

1、Service概述 1.1、service简介 Service是一种长生命周期的组件,没有界面,由其他组件开启,运行于当前界面的进程中用于去执行那些不需要和用户交互而且还要求长期运行的任务。当某个...
  • znouy
  • znouy
  • 2016年05月05日 10:33
  • 1483

android 四大组件service 音乐播放器的实现

新创建一个Android工程《音乐播放器》,包名:com.itheima.musicPlayer。 在res目录下新建一个文件夹raw(名字必须为raw,约定大于配置的原则),然后在raw目录中拷贝...

Android基础之四大组件---Service(一)

Android基础之四大组件—Service(一)之前想着把Android的基础过一遍,于是就想到了通过写博客的方式来巩固自己所掌握的。写的不好的地方请各位看官多多指教,大家一起进步,有一句话说的不是...

android四大组件之service

Service服务与Activity有些像,就像个没有界面的activity,它也是Context的子类,可以自定义一个类继承Service, 它的生命周期如下: onCreate():第一次创建调用...

Android四大组件(四) Service

Service 服务Service 服务 介绍 开启服务 停止服务 start方式开启服务的特点面试 bindService 方式开启服务的特点面试 可以使用Service开启特殊的广播接收者 b...
  • xfhy_
  • xfhy_
  • 2017年04月27日 08:05
  • 402
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android四大组件之Service
举报原因:
原因补充:

(最多只允许输入30个字)