【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

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的启动过程

此前我们用较长的篇幅来介绍Android应用程序的启动过程(根Activity的启动过程),这一篇我们接着来分析Service的启动过程。建议阅读此篇文章前,请先阅读Android深入四大组件(一)应...

Android 四大组件之一service

package com.kawa; import com.kawa.MyService.Mybind; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; import and

Android 四大组件之一 ------- 服务 service

Android 四大组件之一   -------  服务  service Android 四大组件之一 服务 service(完整版) 进程概念的介绍和了解 进程 process  ...

【攻克Android (27)】四大组件之 Service

[b][size=large]一、Service[/size][/b] [size=medium][b]1. 概念[/b][/size] [size=medium]Service是Android系统的后台服务组件,适用于开发无界面、长时间运行的应用功能。例如音乐播放等。[/size] [size=medium]Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。[/size] [size=medium][b

Android深入四大组件(三)Service的绑定过程

我们可以通过调用Context的startService来启动Service,也可以通过Context的bindService来绑定Service,建议阅读此篇文章前请阅读《Android深入四大组件...

android 编写Service(四大组件之一)的方法

编写Service的步骤: 第一步:在androidMainfest.xml功能清单对服务进行配置 //PhoneListenService是自己编写继承Service的类 <service android:name=".PhoneListenService" /> 第二步:继承Service类,编写自己想要的服务,如编写PhoneListenService public class PhoneListenService extends Service{ private static f

Android四大组件 Activity BroadCast ContentProvider Service 的理解

(组件内容)Android四大组件是一个App的基石,四大组件相信大家都知道哪四个,Activity,BroadCast,ContentProvider,Service。 (设计思想)Android之...

android学习笔记(二)四大组件Service详解

service可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务

Android 四大组件之Service解析

Service 简介 Service 是Android四大组件之一,在我们日常的开发中会经常用到,主要用于做一些耗时的后台工作,或者用于运行一些需要长期运行的任务 有的时候需要在程序退出的时候...

Android四大组件之Service

Android中的Service和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。 概述: 1,Service是Android的四大组件之一 2,Se
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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