![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
router&binder&ioc
android新技术
Loong.xu
青春的诀别是不是意味着年迈的将近;其实,青春,她一直都在继续.
展开
-
Binder传输机制原理(二)
1 事务的传递和处理 从IPCThreadState的角度看,它的transact()函数是通过向binder驱动发出BC_TRANSACTION语义,来表达其传输意图的,而后如有必要,它会等待从binder发回的回馈,这些回馈语义常常以“BR_”开头。另一方面,当IPCThreadState作为处理命令的一方需要向发起方反馈信息的话,它会调用sendReply()函数,向binder驱动发出BC_REPLY语义。当BC_语义经由binder驱动递送到目标端时,会被binder驱动自...翻译 2020-11-08 11:14:50 · 935 阅读 · 0 评论 -
Binder传输机制原理(一)
1 Binder是如何做到精确打击的? 我们先问一个问题,binder机制到底是如何从代理对象找到其对应的binder实体呢?难道它有某种制导装置吗?要回答这个问题,我们只能静下心来研究binder驱动的代码。在本系列文档的初始篇中,我们曾经介绍过ProcessState,这个结构是属于应用层次的东西,仅靠它当然无法完成精确打击。其实,在binder驱动层,还有个与之相对的结构,叫做binder_proc。为了说明问题,我修改了初始篇中的示意图,得到下图:1.1 创建bind...翻译 2020-11-08 11:12:43 · 1385 阅读 · 1 评论 -
Android调试注解处理器AnnotationProcessor
在开发的过程中有时候我们为了使代码更简洁、运行速度更高或者提高开发效率。通常情况下我们都需要自己开发一套框架或者借助第三方开源框架来实现这个目的。例如:我们可以借助ButterKnife来去掉findViewById、设置点击事件等重复的操作,通过EventBus可以方便的订阅以、发布、接收事件等。这样可以大大的提高我们的开发效率。 今天先介绍如何调试注解编译器AnnotationPro...翻译 2020-03-25 10:51:34 · 491 阅读 · 0 评论 -
android自定义注解之Element详解
基本介绍element指的是一系列与之相关的接口集合,用于建模java编程语言元素的接口,它们位于javax.lang.model.element包下面element是代表程序的一个元素,这个元素可以是:包、类/接口、属性变量、方法/方法形参、泛型参数。element是java-apt(编译时注解处理器)技术的基础,因此如果要编写此类框架,熟悉element是必须的。Ele...翻译 2020-03-24 16:03:17 · 2457 阅读 · 0 评论 -
Android 自定义注解(Annotation)
现在市面上很多框架都有使用到注解,比如butterknife库、EventBus库、Retrofit库等等。也是一直好奇他们都是怎么做到的,注解的工作原理是啥。咱们能不能自己去实现一个简单的注解呢。注解(Annotation)是JDK1.5新增加功能,注解其实就是添加在类、变量、方法、参数等前面的一个修饰符一个标记而已(不要把他想的太复杂)。比如下面的代码里面@Ov...翻译 2020-03-24 12:30:30 · 353 阅读 · 0 评论 -
Android AIDL实践
概述AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言,它是用来实现进程间通讯的,本文使用AIDL写一个小demo来实现夸进程间通讯AIDL介绍文件类型:用aidl书写的文件的后缀是.aidl 数据类型:基本类型, 字符串类型(String&CharSequence), List, Ma...翻译 2020-03-26 22:41:02 · 204 阅读 · 0 评论 -
Router(四):打造自己的深度链接库DeepLinkSo实战
前言今天是这个系列的最后一篇,如果你还看过之前的内容,可以先阅读:Android:从零开始打造自己的深度链接库(一):ARouter简介Android:从零开始打造自己的深度链接库(二):ARouter源码解析Android:从零开始打造自己的深度链接库(三):自定义XML协议我们将借鉴ARouter的开发思路,扩展新的功能。上一篇我们已经订好了XML协议,并且把XML中的内容...翻译 2020-04-25 18:33:21 · 640 阅读 · 0 评论 -
Router(三):自定义XML协议
前言之前我们把ARouter的原理分析了一遍,如果你是刚启动的新项目,建议立刻使用,哪天运营有这个需求了,你就可以牛逼的对他说,我早就已经做好了。但是老项目就会有一丢丢的尴尬,所以我们要在ARouter的基础上,独立深度链接的功能,然后打造出加强版的深度链接库,我起名为DeepLinkSo。正文回顾一下ARouter的源码,我们记得他使用的是自定义注解,完成路由的注册和绑定。注解看...翻译 2020-04-25 17:15:50 · 332 阅读 · 0 评论 -
ARouter(二)源码解析
前言这一篇我们来具体看一下ARouter的实现原理,如果你之前没有接触过ARouter,可以先阅读上一篇:Android:从零开始打造自己的深度链接库(一):ARouter简介废话不多,我们赶紧分析源码。正文首先我们从github下载最新的源码:被选中的三个Module是我们今天分析的重点:arouter-annotation从名称看我们可以猜到这是自定义注解的库,我...翻译 2020-04-25 16:52:17 · 438 阅读 · 0 评论 -
ARouter(一):简介
前言在应用开发中,原生app经常内嵌Web,节省开发的成本,这种情况我们通过注入JS脚本来解决原生和Web的通信问题。那么相反,在浏览器环境中,Web又如何启动App呢?这就是深度链接的出现的原因。深度链接看着是一个很6的名字,实际上就是隐式启动的一种,所以说有文化就是不一样。隐式启动最大的优势在于不明确指定启动页面的名字,通过各种过滤参数,找到符合条件页面,对匹配的过程解耦,堪称路由模式...翻译 2020-04-25 16:02:31 · 535 阅读 · 0 评论