Header
在如今的 Android 组件化开发中,一款好的路由框架是不可或缺的。比如目前阿里的 ARouter 、美团的 WMRouter 等。路由框架可以降低 Activity 之间的耦合,从而在不需要关心目标 Activity 的具体实现类, 利用协议完成跳转。
ActivityRouter使用方法
在AndroidManifest.xml配置
在如今的 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 { |
HTTP、HTTPS在我们日常开发中是经常会接触到的。
我们也都知道,一般 Android 应用开发,在请求 API 网络接口的时候,很多使用的都是 HTTP 协议;使用浏览器打开网页,也是利用 HTTP 协议。看来 HTTP 真是使用广泛啊,但是,HTTP 是不安全的。利用网络抓包工具就可以知道传输中的内容,一览无余。比如我经常会使用 Fiddler 来抓包,搜集一些有趣的 API 接口。
那么问题来了,如何保证 HTTP 的安全性呢?基本上所有的人都会脱口而出:使用 HTTPS 协议。99.9% 的人都知道 HTTPS 会将传输的内容进行加密,但是接着问具体加密的过程和步骤,很多人就哑口无言了。
之前在工作的过程中,遇到不同 Android 版本下 URI 采用不同方式来获取文件路径的问题。
因为需求的原因,要求拍照上传或者从相册中选择图片上传,而且图片是需要经过压缩的,大小不能超过2M。
很快,拍照的这部分就搞定了。那么相册中选择图片的也是一样的道理,应该也是轻松解决了。
至于选择图片的代码,如下所示:
1 | intent = new Intent(Intent.ACTION_GET_CONTENT); |
VirtualAPK 是滴滴开源的一款 Android 插件化的框架。
现在市面上,成熟的插件化框架已经挺多了,那为什么还要重新开发一款轮子呢?
在加载耦合插件方面,VirtualAPK是开源方案的首选。
以上是滴滴给出的官方解释。
对于我们开发者来说,这种当然是好事。第一,我们选择插件化框架的余地变多了;第二,我们也可以多学习学习框架内部实现的原理,一举两得。
注:本文解析的源码基于 API 25,部分内容来自于《Android开发艺术探索》。
Android View 事件分发的机制可以说是 Android 开发者必知点之一,一般在面试的过程中肯定也有涉及。
事件分发可以说分为三个部分,
我们在分析事件分发时,也会依次按照这三个部分来入手。
先入手第一部分:Activity 。
Android Window 源码解析(四):Window 的删除机制
注:本文解析的源码基于 API 25,部分内容来自于《Android开发艺术探索》。
这篇将是 Window 系列的最后一篇了,主要来讲讲 Window 删除的机制原理。
其实相对于 Window 的添加和更新来说,删除也是换汤不换药的。也是通过 WindowSession 和 WindowManagerService 来完成这个步骤的。
我们删除 Window 的代码: