sunwen

Results 94 issues of sunwen

# AAC: LifeCycle [TOC] 这篇文章对 Android Architecture Component 中的 LifeCycle 进行源码分析,看其怎么对 Activity 的生命周期进行处理。 ## LifeCycle 基本认识 这里先从 ComponentActivity 开始看起,作为比较基础的类,google 在推出 AAC 框架时就慢慢对基础类做了修改: ```java public class ComponentActivity extends androidx.core.app.ComponentActivity implements LifecycleOwner,...

SOURCE CODE

# Interaction between Native and js [TOC] 这篇文章介绍 Android 与 js 的交互。由于目前很少有纯 native 的应用,并且电商类 APP 都含有大量的网页,所以这块知识属于必须掌握的。 ## 交互方式概览 Android 和 js 交互实际上是通过 WebView 互相调用方法: * Android 调用 js 的代码 *...

USAGE

# Arouter [TOC] ## 需求背景 当一个 App 开发随着迭代而变得复杂时,多模块开发就显的很有必要,multimodule。 ### Android 原生方案的不足 原生路由方案一般是通过显式 intent 和隐式 intent 两种方式实现,均存在不足: 1. 显式需要直接持有对应 class,从而导致强依赖关系,提高了耦合度。 2. 隐式由于 action 定义在 Manifest,扩展较差;另一方面不适合协作。 3. 由于 startActivity() 失败后无法降级,直接异常,不可取。 ### 自定义路由框架的适用场景...

DOING

# Https [TOC] 这篇文章简单介绍一下 https 的工作原理和相关的加密过程 ## Https 工作原理 https 在传输数据之前需要客户端和服务端之间进行一次握手,在握手过程中确定双方加密传输数据的密码信息。TLS/SSL 协议中使用了非对称加密,对称加密和 hash 算法。具体的过程如下: 1. 浏览器将自己支持的一套加密规则 发送给服务器 2. 服务器选出一组加密算法和 Hash 算法,并将自己的身份信息以证书的形式发回浏览器。其证书中包含了网站地址,加密公钥,以及证书的颁发机构等信息 3. 浏览器获得证书之后: 1. 验证证书的合法性(颁发证书的机构是否合法,以及包含的地址是否匹配正在访问的地址)。如果证书有效,那么浏览器会显示可信锁头🔒标志 2. 确认证书有效之后,或者用户接受不受信任的证书,浏览器会生成一串随机数字,并用证书的公钥加密,作为以后通信对称加密的密钥。 3. 使用约定好的 hash...

DOING

# Retrofit > A type-safe HTTP client for Android and Java 基于 version 2.5.0 进行分析。 ## Demo [官方使用文档](https://square.github.io/retrofit/) Retrofit 将 Http API 转换为 java 接口,因此可以做如下定义 ```java public interface GitHubService {...

DOING
SOURCE CODE

# Glide:The loading process of the main flow [TOC] 分析来自 glide 4.8.0, 官方 [使用文档](http://bumptech.github.io/glide/) >Glide是一个快速高效的Android图片加载库,注重于平滑的滚动。 > >Glide 支持拉取,解码和展示视频快照,图片,和GIF动画。 > >```java >Glide.with(fragment) > .load(url) > .into(imageView); >``` 上面是官网介绍的最简单的用法,本文章就对这个主流程做个简单分析。 ## .with() 首先来看...

SOURCE CODE

# Activity: Lifecycle and ActivityThread [TOC] 之前说了 App 的大概启动流程,在 Launcher 进程也是通过 startActivity 方法启动 Activity。经过一系列进程创建,Application 初始化之后,MainActivity.onCreate() 方法将会执行,这篇文章就从开始入手分析。 ## onCreate 过程 ### ActivityThread.handleLaunchActivity 启动 Activity 的整个过程最终都会调用该方法,部分代码和注释如下: ```java // 当Server 请求启动或者重启时,实现 Activity 的启动,...

SOURCE CODE

# HashMap:Core source code analysis [TOC] hashmap 作为 java 和 Android 开发中面试的必问问题,很有必要对其有一个详细的了解。 这篇文章将会从源码角度,对其存储结构,功能实现,扩容优化等进行分析。 分析版本 java 1.8.0 ## 基本使用 在 hashmap 源文件前的注释中,可以了解的信息如下: 1. 实现了 map 接口,提供了 map 相关的操作,并支持 key, value 都为...

SOURCE CODE

# Logger:Powerful logging library in Android [TOC] 这篇文章介绍 Android 中常用的日志功能。 日志上在开发中常用的一个工具,可以打印任何需要的信息来辅助开发,系统提供的日志模块在这里不做过多叙述;下面会分别从基本使用和源码去介绍一个强大的日志工具。 ## 基本用法 这个日志的地址和基本使用方法在其开源库主页都有基本介绍:[logger](https://github.com/orhanobut/logger). 总结一下对于使用者来说,优点在哪: 1. 支持打印当前线程和当前方法 2. 支持 json,xml, list, map, set 等不同的格式输出 3. 自定义输出到文件,持久化保存日志文件。 ### 使用 这里还有一个常见的**开发技巧**:对于第三方库来说,尽量自己再包装一层,方便以后替换。 1....

USAGE
SOURCE CODE