sunwen

Results 94 issues of sunwen

# Android Adb Shell Command Record [TOC] 本篇文章用于收集一些 Android 开发中常用的 Adb 命令。 ### 当前 Activity 在接触一个陌生项目中,经常需要知道当前的 Activity 的信息。那么可以使用命令: `adb shell dumpsys activity top`, 可以的输出内容如下:(内容很多) ```kotlin SW-MacBook-Pro:other zp$ adb shell dumpsys...

DOING

#Android 高级面试题目和答案 参考:https://github.com/jinguangyue/Android-Advanced-Interview ## Handler 相关知识,面试必问! 常问的点: Handler Looper Message 关系是什么? Messagequeue 的数据结构是什么?为什么要用这个数据结构? 如何在子线程中创建 Handler? Handler post 方法原理? ThreadLocal 必备 [Android消息机制的原理及源码解析](https://www.jianshu.com/p/f10cff5b4c25) 源码角度完整解析 [Handler 都没搞懂,拿什么去跳槽啊?](https://juejin.im/post/5c74b64a6fb9a049be5e22fc) [Android Handler 消息机制(解惑篇)](https://juejin.im/entry/57fb3c53128fe100546ea4f2) [Android 消息机制](https://blog.csdn.net/guolin_blog/article/details/9991569) **郭神的文章**...

# TouchEvent [TOC] 本篇文章从源码角度分析 Android 触摸事件的分发传递机制。 ## View 的基础 ### 位置参数 top, left, right, bottom,到父 View 的参数 Android 3.0 之后增加的参数: * x, y:View 左上角的坐标 * translationX 和 translationY: View 左上角相对于父容器的偏移量...

SOURCE CODE

# MultiType 的扩展使用(ViewBinding, Diff.Callback) 该库是我目前使用过最好用的 adapter 库,严格的遵循数据驱动,针对使用方便性做了一些扩展。 ## Delegate 的封装 这一步封装,结合 viewbinding 省去 viewholder 的创建过程。 ### 使用反射 ```kotlin abstract class ViewBindingDelegate : ItemViewDelegate() { override fun onCreateViewHolder( context: Context, parent:...

USAGE
SOURCE CODE

随着项目的越来越来,drawable 定义越来越多。 通过kotlin DSL 来替换 xml 定义,提高开发效率,方便管理 ```kotlin object Drawable { const val TOP_LEFT = 1 const val TOP_RIGHT = TOP_LEFT.shl(1) const val BOTTOM_RIGHT = TOP_LEFT.shl(2) const val BOTTOM_LEFT =...

USAGE
SOURCE CODE

# Room 替换 SP 的可行性实践 ## 对比 ### SharedPreference 简称SP,使用键值对的形式保存原始类型的数据,默认以XML格式的文件来存储这些数据 - 适用场景:存储量小、简单的数据 - 优缺点:有自己的内存级的缓存,在数据量小的时候读取较快,但是跨进程不安全,数据量大的时候加载缓慢,全量写入,容易引起ANR ### sqlite, Room Room并不是一个数据库,他是在 sqlite 的基础上提供了一个抽象层,让用户能够在充分利用 SQLite 的强大功能的同时,获享更强健的数据库访问机制。并保留了灵活的接口适配层。 ```kotlin @Database(entities = [KeyValue::class], version = 1, exportSchema...

USAGE
SOURCE CODE

[TOC] 线上的崩溃是无法忍受的,那么有没有一种方法,将所有的崩溃进行 try catch,在开发过程中弹对话框提示,在线上环境上报进行分析。这样遇到崩溃时,结果就是用户的某些操作可能无效果,但相比崩溃,用户体验会好上很多。 ## 思路 收到 https://github.com/jenly1314/NeverCrash 的启发。下面是具体的方法。 ```kotlin import android.app.Activity import android.app.AlertDialog import android.app.Application import android.content.pm.ApplicationInfo import android.os.Bundle import android.os.Handler import android.os.Looper import java.io.PrintWriter import java.io.StringWriter object CrashUtil...

SOURCE CODE

# Android Custom View: BaGuaView [toc] 最近想熟悉一下自定义 view 的内容,于是写了下面这个八卦图,记录一下开发流程。 ![bagua](https://user-images.githubusercontent.com/10796970/74587814-353d0600-5032-11ea-8f7e-4490e5a37eb9.gif) ## 自定义View的通用步骤 这个自定义 view 主要分为两步,测量和绘制。 其中测量部分几乎是所有自定义 view 的通用步骤。 新建 BaguaView,并实现 onMeasure() 方法。 ```kotlin class Bagua2View @JvmOverloads constructor( context: Context, attrs:...

SOURCE CODE

## Logger ![image](https://user-images.githubusercontent.com/10796970/57189045-dc393100-6f3b-11e9-82ff-29641523e0df.png) ![image](https://user-images.githubusercontent.com/10796970/57189342-405df400-6f40-11e9-91da-02b6b5442ba2.png) ![image](https://user-images.githubusercontent.com/10796970/57190040-861eba80-6f48-11e9-87ff-55aaebd0c8fa.png) ## okhttp ![image](https://user-images.githubusercontent.com/10796970/57426352-70afd600-7251-11e9-896d-293cf61ab607.png) ![image](https://user-images.githubusercontent.com/10796970/57428300-53cbd080-725a-11e9-812d-227d0dc1b419.png)

DOING

# Android RecyclerView Optimization [TOC] 这篇文章总结一下 RecyclerView 的优化使用 ## 数据处理和视图加载分析 在拿到数据之后,其处理也应该异步操作。最后将直接要显示的结果进行显示。 ## 数据优化 分页拉取远端数据,对取下来的远端数据进行缓存,提升二次加载速度; 对于新增或者删除数据,通过 DiffUtil 进行局部计算更新,而不是全局更新。 ## 布局优化 ### 减少过渡绘制 减少 VH 中的布局层级,可以考虑自定义 View 或者更合理的较少布局层次,不推荐使用 ConstraintLayout。 ### 减少 xml...

USAGE