前言
前几天对 ARouter 的页面跳转源码进行了分析,趁着今天有空,就讲讲 ARouter 里面的拦截器吧。
拦截器解析
把视线转移回 ARouter 的 init 方法
1 | public static void init(Application application) { |
前几天对 ARouter 的页面跳转源码进行了分析,趁着今天有空,就讲讲 ARouter 里面的拦截器吧。
把视线转移回 ARouter 的 init 方法
1 | public static void init(Application application) { |
之前对 ActivityRouter 的源码做了一次分析,相信大家对路由框架已经有一个大概的理解了。
而今天给大家分析一下 ARouter 。大家在项目组件化的过程中,可能绝大多数的开发者都会使用 ARouter 来作为项目的路由框架。毕竟 ARouter 是阿里出品,优点自然不必多说了。
所以在平常使用的过程中,不仅仅要做到会用,还要深入了解一下 ARouter 的内部原理。
本次 ARouter 的解析分为三部分:
在如今的 Android 组件化开发中,一款好的路由框架是不可或缺的。比如目前阿里的 ARouter 、美团的 WMRouter 等。路由框架可以降低 Activity 之间的耦合,从而在不需要关心目标 Activity 的具体实现类, 利用协议完成跳转。
在AndroidManifest.xml配置
Android Architecture Component ViewModel 解析
之前给大家分析过了 LiveData ,今天就来看看 ViewModel 。
ViewModel 的作用就相当于 MVP 中的 Presenter ,是用来衔接 Model 和 View 的。通常把一些与 View 无关的业务逻辑写在 ViewModel 里面。ViewModel 内部创建出 LiveData 对象,利用 LiveData 对象来传递数据给 View 。
ViewModel 相对于 Presenter 而言,有以下几个好处:
Android Architecture Component Lifecycle 解析
Lifecycle 的作用简单的来说就是让你自己定义的东西可以感知生命周期。比如你想设计了一个 GPS 位置监听器,打算在 Activity 可交互状态下发送地址位置,那么就可以利用 Lifecycle 来做这件事,这样和 Activity 的耦合性就减少了很多。
先来看 LifecycleOwner 接口,这个接口定义就说明了某样东西是具有生命周期的。getLifecycle() 方法返回生命周期。
Android Architecture Component LiveData解析
Android Architecture Component 是 Google 在 2017 年推出的一套帮助开发者解决 Android 架构设计的方案。里面有众多吸引人的亮点,比如 Lifecycle、ViewModel 和 LiveData 等组件的设计,确实是一款牛逼的架构。
今天主要来解析一下其中的 LiveData 是如何工作的。
LiveData 表示的是动态的数据,比如我们从网络上获取的数据,或者从数据库中获取的数据等,都可以用 LiveData 来概括。其中 setValue 方法是需要运行在主线程中的,而 postValue 方法是可以在子线程运行的。
新建一个 Project,确保项目 build.gradle 中的 Gradle 插件版本不低于 1.5.0-alpha1,比如我的 Demo 是 3.1.2 版本的:
1 | buildscript { |
之前在工作的过程中,遇到不同 Android 版本下 URI 采用不同方式来获取文件路径的问题。
因为需求的原因,要求拍照上传或者从相册中选择图片上传,而且图片是需要经过压缩的,大小不能超过2M。
很快,拍照的这部分就搞定了。那么相册中选择图片的也是一样的道理,应该也是轻松解决了。
至于选择图片的代码,如下所示:
1 | intent = new Intent(Intent.ACTION_GET_CONTENT); |
VirtualAPK 是滴滴开源的一款 Android 插件化的框架。
现在市面上,成熟的插件化框架已经挺多了,那为什么还要重新开发一款轮子呢?
在加载耦合插件方面,VirtualAPK是开源方案的首选。
以上是滴滴给出的官方解释。
对于我们开发者来说,这种当然是好事。第一,我们选择插件化框架的余地变多了;第二,我们也可以多学习学习框架内部实现的原理,一举两得。
注:本文解析的源码基于 API 25,部分内容来自于《Android开发艺术探索》。
Android View 事件分发的机制可以说是 Android 开发者必知点之一,一般在面试的过程中肯定也有涉及。
事件分发可以说分为三个部分,
我们在分析事件分发时,也会依次按照这三个部分来入手。
先入手第一部分:Activity 。