Potato icon indicating copy to clipboard operation
Potato copied to clipboard

Read the fucking source code for the Android interview

Results 73 Potato issues
Sort by recently updated
recently updated
newest added

# Android UI Optimization 这篇文章介绍 UI 的绘制优化 ## 基本认知 在 Android 中,如果页面的绘制 > 16ms, 那么页面就会有卡顿感,因此需要确认刷新帧率 > 60fps。 ## 检测工具 1. Layout Inspector:只能分析 Android Studio 中正在运行的 App 的视图布局结构 2. GPU 配置渲染工具:从...

CONCEPT

# Android apk packaging process and signature algorithm [TOC] 这篇文章介绍安卓的打包流程和签名算法。 ## apk 打包流程 在平时开发的过程中,每天都会 run 很多次项目,AS 就会将 apk 自动打包,安装到手机上,那么需要经过哪些流程。![image](https://user-images.githubusercontent.com/10796970/58246285-3a15a780-7d89-11e9-9276-0b8c871bf64f.png) 上述流程来自官网: 1. 编译器将所有的源代码(module, jar, aar, aidl)转换成 DEX(dalivk Executalble)文件,将所有其他内容转换成已编译资源。 2. APK 打包器将...

CONCEPT

# when you type url into your browser and hit enter? [TOC] 至少二十年的经典面试题目。主要过程如下: 客户端获取URL - > DNS解析 - > TCP连接 - >发送HTTP请求 - >服务器处理请求 - >返回报文 - >浏览器解析渲染页面 - >...

CONCEPT

# Android ByteDance Screen adaptation [TOC] 这篇文章讲解 Android 不同屏幕的适配方式 ## 传统的 dp 适配方式的缺点 android 中的各种各种单位渲染之前都会转为 px。 * px = density * dp * density = dpi / 160 * px...

CONCEPT

# Android WebView Optimization [TOC] 以前项目做过相关的专项,优化 webview 的加载。 ## Html 加载流程 ![2362769-a8b56d5088dc393b](https://user-images.githubusercontent.com/10796970/58369757-b6e38580-7f31-11e9-8069-f0d6156c296d.png) ### 加载流程各节点耗时分析优化 * WebView 创建初始化:由于首次初始化涉及到浏览器内核的加载初始化,明显会比第二次初始化慢很多。初始化后,即使 WebView 释放,但部分共用的全局服务/资源对象未释放,而第二次初始化不需要重新生成,因此会快很多。 * 方案:提前初始化全局 webview。或者维护一个 webview pool 进行复用。 * 资源文件下载耗时:弱网情况下,下载网页资源耗时,白屏时间过程。 * 网页资源压缩,CND 加速处理,缩短请求耗时。...

CONCEPT

# Kotlin ### 知识点 #### 为什么不需要 findViewbyid Kotlin 会自动生成类似 findViewById() 的方法:findCachedViewById(),在这个方法里面创建一个 HashMap 缓存每次查找到的 View,避免每次调用 View 的属性或方法时都会重新调用findCachedViewById()进行查找。具体查找流程:在findCachedViewById()中,会先通过缓存 HashMap 的 get 方法来获取控件, get() 中传入的 key 即控件 ID,由于第一次 get 的值为 null ,因此会调用findViewById() ,并把控件...

DOING

# OKhttp(2): Source code analysis(1) [TOC] 上一篇文章介绍了 [okhttp 的基本使用](https://github.com/yunshuipiao/Potato/issues/4),以及官方 wiki 对于okhttp 的部分解释。 这一篇文章主要从源码来分析 okhttp,理解过程,不求每个细节。 使用 okhttp 最新代码,已从 java 转为 kotlin, 为okhttp4 的第一个版本 ## 请求过程 这里还有从官方的 get 和 post 请求作为例子: ```kotlin...

SOURCE CODE

# AAC: LiveData [TOC] 对比 mvp 而言,使用大量的接口在 逻辑层和UI 层之间通信,AAC 则使用 livedata 进行通信。 ## 基本使用 下面简单的演示如何在两者进行通信: ```java // MainActivity.java override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java) bindData() initView()...

SOURCE CODE

# AAC: ViewModel [TOC] 前一篇文章介绍了 AAC 最基本的功能,处理生命周期。 在之前的 mvc 开发模式中,与 UI 无关的逻辑都写在 Activity 或者 Fragment 中,文件过大且不利于测试;后来处理 mvp 分离逻辑部分,但是需要处理生命周期的问题,对状态的大量判断和空的判断。有了 lifecycle 处理生命周期,所以 这里的 viewmodel 可以用来纯粹的处理逻辑部分,并用来保存 UI 中的数据和状态。 > ViewModel是存储UI相关数据并不会因为旋转而销毁的类。 ## 简单认识 这里还是从...

SOURCE CODE