Android四大组件--服务
来源:互联网 发布:靳东实际人品知乎 编辑:程序博客网 时间:2024/05/20 06:28
android基础–服务
- 01.绑定服务的开发流程
- 02.绑定服务和不绑定服务的操作
- 03.远程服务AIDL的基本编写思路
activity调用service方法
以startService方式开启服务
1. 服务不能创建对象,自己创建的对象得不到上下文对象2. startService不能获取服务对象
以bindService() 绑定服务方式开启服务
* 我们无法直接从activity中service对象,但是可以间接的获取到服务中的方法* 基本实现原理: 在service的内部创建一个内部类,间接调用方法* 操作步骤: * 服务中: 1. 写一个类继承binder,调用服务中的方法 2. 绑定服务,在方法onBind返回: 内部类对象 * activity中: 3. 在点击事件或onCreatActivity方法中,绑定服务: bindService(绑定的服务意图对象,通讯频道(同.办证电话),当服务不存在自动创建出来: BIND_AUTO_CREATE) 1>. 通讯频道conn: 创建一个类实现ServiceConnection接口 2>. 在实现类中,有一个方法: onServiceConnected中的 IBinder service就是中间代理人 3>. 将service强制类型转换为MyBinder对象绑定服务的升级版: 隐藏实现方法,对外提供公共访问接口 1. 定义接口,暴露部分方法 //作用: 可以屏蔽service内部类的方法 2. service内部类实现接口,重写接口中的抽象方法 3. activity中,定义private 接口的成员变量,强制类型转换为接口的对象
注意: 1.service需要配置清单文件(name: 类名加全包名),否则系统会抛出异常; 2. 在onBind记得返回自定义的内部类对象
绑定服务的生命周期
- 绑定的方式开启服务: oncreate–>onbind–都会只执行一次,绑定只能绑定一次,不会调用 onStart()和onStartCommand()
- 解除绑定: onunbind–>ondestroy–服务只可以被解绑一次,如果多次解绑会有状态异常
混合式服务
应用场景: 保证能后台长期运行,又能调用到服务里面的方法
严格按照步骤编写代码:
1.start方式开启服务 ->保证服务在后台能够长时间运行2.bind方式绑定服务 ->绑定了服务,方便调用服务里的方法3.unBind方式解绑4.stop方式停止服务
本地服务和远程服务
本地服务(local service): 服务代码运行在当前程序内部
远程服务(remote service): 服务代码运行在另外一个程序
重要概念
- 进程: 操作系统分配独立的内存空间.独立是指每个进程都是有自己的内存空间,不同进程是不能相互访问的(保证进程间的安全),若想要访问需要通过IPC
- IPC: 进程间通讯.在系统底层,有一块公共的内存空间(BINDER(IPC)驱动),不同进程可以通过将数据存储到该公共空间,进行数据交换
- Android中: aidl是将底层(BINDER(IPC)驱动)的实现过程包装的成一套: 安卓接口定义语言
AIDL
定义: AIDL 是Android 的一种接口描述语言。编译器可以通过aidl 文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程的目的.
在Activity 里的代码需要访问Service 中的一个方法,操作步骤:
1. 远程服务: 1. 改接口后缀名aidl,并删除接口修饰符: public,private 2. service中MyBinder继承IService.Stub2. 本地: 1. 将远程服务aidl文件考到工程目录,包名必须一致 2. 得到远程服务的代理对象 3. 调用远程服务的方法
应用场景: 主要是不同应用之间的相互访问
0 0
- Android四大组件--服务
- Android四大组件之服务
- Android四大组件之服务
- Android四大组件之服务
- Android四大组件之服务
- Android四大组件服务(Service)
- Android四大组件之一服务
- Android 四大组件 Service 服务
- Android四大组件Service 服务
- Android 四大组件 Service 服务
- android四大组件之服务
- Android四大组件之一Service(服务)
- android四大组件之服务(Service)
- Android四大组件之---Service(服务)详解
- Android四大组件之Service服务
- Android四大组件之Service服务
- Android开发-四大组件之服务、广播
- Android四大组件之Service(服务)
- wampserver 的Apache启动错误提示:The requested URL / was not found on this server
- [网易博客]Javascript Namespace使用
- 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut
- 3D字母滑动选择城市列表
- 知识库--Loader--delegation model 代理模型(47)
- Android四大组件--服务
- strstr模拟实现
- Fragment的addToBackStack()使用
- GMM的EM算法实现
- linux下安装oracle数据库
- Spring4 + Hibernate4集成Spring Data JPA
- python学习笔记-2(OOP)
- 用python开发股票自动技术分析的软件
- 【基于Cocos Creator+Socket.io的联机对战黑白棋(4)】——资源文件