千家信息网

如何解析Android ApiDemo惯用代码

发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,今天就跟大家聊聊有关如何解析Android ApiDemo惯用代码,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、关于Dialog|---
千家信息网最后更新 2024年11月20日如何解析Android ApiDemo惯用代码

今天就跟大家聊聊有关如何解析Android ApiDemo惯用代码,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

一、关于Dialog

|--- com.example.android.apis.app/AlertDialogSamples.java

里面包含了Dialog的各种用法,有10种不同的Dialog实例。

|--- com.example.android.apis.app/FragmentDialog.java

使用DialogFragment来实现Dialog,可以使用onCreateView()来创建Dialog布局,也可以使用DialogFragment类的getDialog()方法,在里面可以使用之前创建Dialog的方法,返回一个Dialog。

Android官方推荐使用DialogFragment。

二、关于Pregerence

|--- com.example.android.apis.preference

这个包里面介绍了Preference的用法,包括使用Code和XML(addPreferencesFromResource)两种方法来实现preference布局,使用setListFooter可以在底部添加一个布局(代码里面是添加一个Button在底部)

三、关于Service

创建Servcie的方法有startService()和bindServcie()两种:由startService()创建的服务的目的只是服务的启动和终止,而bindServcie()创建的的服务是为了服务的远程控制(一般都会获得一个服务对象实例).

|--- com.example.android.apis.app/LocalServcie.java

由startService()创建的服务调用完onCreate()方法后,将继续调用onStartCommand()方法,该方法有返回值,可以通过该返回值来设置Servcie被强行关闭之后是否重新再启动

通过在代码里面添加Log,得到bindServcie()的执行流程:1.客户端请求连接服务bindServcie()----->2.在绑定的服务生成之后,Android会调用服务的onBind()回调方法,用来处理服务绑定,onBind()方法返回一个IBinder对象,用于与服务通信----->3.客户端的ServcieConnection对象的onServiceConnected(cn,IBinder)方法使用第2步传递的IBinder对象,调用服务端的getService()得到服务实例.

|--- com.example.android.apis.app/RemoteServcie.java

AIDL是一种接口定义语言,用来约束两个进程之间的通信规则,供编译器生成代码,用来实现Android设备上两个进程间的通信。

以ISecondary.aidl文件为例,Android会根据AIDL文件中定义的接口自动生成绑定远程服务所需要的代码,整个bindServcie()的执行流程如下:

1.进程A调用bindServcie()请求连接RemoteService

2.进程B在服务生成之后回调onBind()方法,生成用于处理Binder IPC的IBinder对象,并返回

3.进程A调用回调方法onServiceConnected()方法,利用onBind()返回的IBinder,将其传递给IScondary.Stub.asInterface()函数,并使用它生成与RemoteService服务绑定在一起的服务代理对象ISeondary.Stub.Proxy,***将其保存到mSecondaryService成员变量中。至此,RemoteService的ISecondary接口的绑定就完成了。

4.进程A使用服务代理对象ISeondary.Stub.Proxy,调用RemoteService服务的getPid()代理方法

5.Binder IPC:服务代理对象ISeondary.Stub.Proxy向服务Binder对象ISeondary.Stub传递Binder IPC数据

6.进程B调用RemoteService服务的getPid() Stub方法,ISeondary.Stub服务Binder对象获取Binder IPC数据后,会调用RemoteService服务里面实现的getPid() Stub方法,将服务进程ID返回给进程A

看完上述内容,你们对如何解析Android ApiDemo惯用代码有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

服务 方法 对象 进程 代码 生成 代理 内容 实例 布局 接口 通信 两个 客户 底部 数据 文件 流程 端的 处理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 贵港微信建设软件开发公司 期权系统软件开发商排名 宏可以由软件开发人员编写 无线网络安全攻防实战进阶 快速找差异数据库 数据库中数字降序 重庆python软件开发报价 中国有人做服务器开发吗 网络安全法立法目的是 销售管理软件服务器版本 河南软件开发有哪些 河南 数据库 qq数据库 查询 高考志愿数据库多钱 北京图诺互联网科技有限公司 郑州软件开发驻场服务方案 远离网络安全手抄报内容文字 mysql数据库只读英文 伊金霍洛旗天气预报软件开发 佛山自主可控软件开发回收价 网络安全手抄报模板六年纪复杂 滨州全球软件开发大会 上海海事大学校内数据库 数据库的固定角色分为固定 华为网络技术大赛入决赛比例 戴尔服务器 管理硬盘分区 数据库题目的解决方案 数据库基本编程指什么意思 我的世界服务器能用qq登录吗 树立价值观 网络安全
0