Miss
呓曲流觞
这个作者很懒,什么都没留下…
展开
-
Parcelable
序列化将数据结构或对象转换成二进制串的过程。反序列化将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程频繁的IO操作,所以消耗比较大,但是实现方式简单serialVersionUID是一个 private static final long 型 ID,通常是 对象的哈希码你可以使用 serialver 这个 JDK 工具来查看序列化对象的 serialVersionUID。SerialVerionUID 用于对象的版本控制。也可以在类文件中指定 serialVersionUID原创 2021-04-19 21:46:35 · 113 阅读 · 0 评论 -
事件分发机制
/*主流程Activity dispatchTouchEventPhoneWindow superDispatchTouchEventDecorView superDispatchTouchEventviewgroup dispatchTouchEventview dispatchTouchEvent -> onTouchEvent继承view,只能处理事件dispatchTouchEvent -> onTouchEvent继承viewgroup,才可分发事件先分发流程原创 2021-04-17 18:42:05 · 78 阅读 · 0 评论 -
recyclerview
recyclerview 吸顶效果,复用,自定义layoutManager自定义NestedScrollView,监听setOnScrollChangeListener,判断scrollY值,当其达到第一个child的高度时,调用recyclerview fling方法onNestedPreScroll方法判断dy大于0,ScrollY小于topView高度时,调用scrollBy进行滚动fragment原理,懒加载...原创 2021-04-17 18:13:06 · 148 阅读 · 0 评论 -
Activity、View、Window
Activity源码中可以看到,在attach方法中创建了Window的实现类PhoneWindow。PhoneWindow.javaPhoneWindow的构造方法中获取DecorViewActivity持有Window对象(实现类是PhoneWindow).PhoneWindow构造方法中获取DecorView.关系 Activity中包含Window,Window中包含View....原创 2021-04-16 13:44:06 · 92 阅读 · 0 评论 -
View绘制
/*View的绘制流程是从ViewRoot的performTraversals开始的,它经过measure,layout,draw三个过 程终将View绘制出来。performTraversals会依次调用performMeasure,performLayout, performDraw三个方法,他们会依次调用measure,layout,draw方法,然后又调用了onMeasure, onLayout,dispatchDraw。measure :对于自定义的单一view的测量,只需要根据父 view原创 2021-04-12 17:22:08 · 132 阅读 · 0 评论 -
Miss Binder
/*用户空间,内核空间用户空间是应用程序的运行空间,内核空间是 Linux 内核的运行空间。为了安全,它们是隔离的,即使用户的程序崩溃了,内核也不受影响。用户空间不能直接调用系统资源,必须通过系统接口,才能向内核发出指令,而内核空间可以执行任意命令,调用系统的一切资源。*/...原创 2021-04-12 16:32:48 · 83 阅读 · 0 评论 -
双亲委派机制
DVM也是实现了JVM规范的一个虚拟器,默认使用CMS垃圾回收器但是与JVM运行 Class 字节码不同,DVM 执行 Dex(Dalvik Executable Format)专为 Dalvik 设计的一种压缩格式。Dex 文件是很多 .class 文件处理压缩后的产物,最终可以在 Android 运行时环境执行。ART是在 Android 4.4 中引入的一个开发者选项,也是 Android 5.0 及更高版本的默认 Android 运行时。ART 和 Dalvik 都是运行 Dex 字节码的原创 2021-04-10 10:00:14 · 193 阅读 · 0 评论 -
屏幕适配方法
/*主要是由于在界面在渲染绘制时,android会将dp转为px,在转换过程中是需要dpi的(上篇文章中有提到),而dpi是根据屏幕真实的分辨率和尺寸来计算的,每个设备都可能不一样的,从而导致显示问题。*/...原创 2021-04-08 09:02:19 · 115 阅读 · 0 评论 -
okhttp
OkHttpClient client = new OkHttpClient(); //请求器Request request = new Request.Buidler().url(url).build(); //请求Call call = client.newCall(request);Response response = call.execute();ResponseBody body = response.body();原创 2021-03-08 10:45:02 · 348 阅读 · 0 评论 -
handler
Looper.prepareMainLooper();public static void prepareMainLooper() { //不能退出消息队列,传递false prepare(false); synchronized (Looper.class) { if (sMainLooper != null) { throw new IllegalStateException("The main Looper has already been原创 2021-03-27 18:01:18 · 155 阅读 · 0 评论 -
Miss 内存优化
1.修改lib配置在gradle使用minifyEnabled进行Proguard混淆的配置,可大大减小APP大小:so文件的优化:通常我们在使用NDK开发的时候,我们经常会有如下这么一段代码:abiFilters “armeabi-v7a”看上面图分析,armeabi-v7主要不支持ARMv5(1998年诞生)和ARMv6(2001年诞生).目前这两款处理器的手机设备基本不在我公司的适配范围(市场占比太少)。而许多基于 x86 的设备也可运行 armeabi-v7a 和 armeabi NDK原创 2021-03-31 19:04:01 · 135 阅读 · 0 评论 -
anr 原因
Miss原创 2021-04-01 17:14:58 · 91 阅读 · 0 评论