Android 系统学习笔记
文章平均质量分 55
Android系统学习笔记
蜗牛
这个作者很懒,什么都没留下…
展开
-
Handler源码分析笔记
1.handler线程切换原理消息发送和消费两者之间是基于内存共享机制,共享一份消息队列。采用ThreadLocal对线程进行管理,保证 每个线程上的Looper是相互独立的。在发送消息的过程中由Message去持有发送者的实例(Handler),导致处理消息的时候是哪个线程上创建的Handler就在那个线程上处理消息。2.Looper为什么不会阻塞主线程?ActivityThread main方法是Android app的入口,Looper.loop()方法必须死循环挂起,它如果.原创 2022-03-02 15:37:56 · 187 阅读 · 0 评论 -
Binder的简单了解笔记
一、Binder是什么?Binder是Android 进程间通信机制之一(IPC)二、为什么一线企业开发的app要使用多线程?1.突破进程内存限制:因为虚拟机分配给各个进程的运行内存是有限制的,LMK(低内存杀死机制)也会优先回收对系统资源占用多的进程。2.功能稳定性:独立的通信进程保持长链接的稳定性。3.规避系统内存泄漏:独立的webview进程阻隔内存泄漏导致的问题。4.隔离风险:对于不稳定的功能放入单独的进程,避免导致主线程崩溃。三、查看某个手机一个进程分配的运行内原创 2022-03-01 11:17:14 · 2354 阅读 · 0 评论 -
Retrofit源码分析笔记
一.仅使用okhttp进行网络请求存在的四个问题。1.复杂的接口配置需要手动进行(body、请求头、参数)2.需要手动解析response body3.无法自动完成线程切换4.嵌套网络请求会陷入“回调陷阱”二.okhttp和retrofit分别的职责是什么?1.okhttp和retrofit都是square公司开发的,okhttp的设计初衷只是单一的进行网络请求,是基于http协议来的。2.retrofit是RESTful风格的http网络框架,retrofit进行网络请求的本质原创 2022-02-23 10:43:42 · 1765 阅读 · 0 评论 -
WorkManager的学习和使用要点笔记
1.在oppo Android 5.1手机上报错Invoke-customs are only supported starting with Android O解决办法:在app的build.gradle中添加android{ compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }}2.Wor原创 2022-02-21 10:12:54 · 1430 阅读 · 0 评论 -
代理模式的学习
代理模式分类1.静态代理模式2.动态代理模式静态代理模式1.委托对象与代理对象需要实现相同的接口2.代理对象的构造方法中传人委托对象实例动态代理模式(通过反射机制动态生成代理者的对象)一、动态代理类import java.lang.reflect.InvocationHandlerimport java.lang.reflect.Methodclass DynamicProxy(val any: Any) : InvocationHandler { over原创 2022-02-14 11:47:28 · 190 阅读 · 0 评论 -
内存抖动相关
目录内存抖动的定义内存泄漏和内存抖动的影响避免内存抖动(避免在很频繁调用的方法中创建对象)内存抖动的定义内存频繁地分配和回收,它伴随着频繁的GC。内存泄漏和内存抖动的影响内存泄漏:可用内存越来越少 -> OOM内存抖动:1.卡顿(进行垃圾回收的时候,其他线程会被挂起,比如点击一个按钮,但是在进行gc操作,ui线程被挂起,无法响应点击事件)2.OOM(如果使用标记-清除算法的话,频繁的进行垃圾回收会导致内存碎片化,连在一起的内存不足以分配给新的对象的时候就会报原创 2021-12-13 11:05:07 · 1356 阅读 · 0 评论