随笔分类 - android底层一点
进程间通信方式
摘要:一:共享存储器系统 1:基于共享数据结构 两个进程间公用某些数据结构,来实现信息交换。这种通信仅适用于传递相对少量的数据,效率低下。比如生产者消费者问题中共用的有界缓冲区。 2:基于共享存储区 在内存中划出了一块共享存储区域,两个进程可通过对区域的读或写交换信息,实现通信。数据的形式和位置甚至访问控
为何一个线程可以对应一个looper
摘要:一:前置知识 Looper有一个变量:ThreadLocal<Looper> Thread.currentThread 打破次元壁,在应用层沟通底层,获得当前线程信息 每一个Thread,不管是Android的main thread,还是自己定义的thread,总之就是一个Thread,含有一个Th
Okhttp学习笔记
摘要:一:设置篇 1:RealCall client.newCall(request).enqueue(object: Callback{ newCall会构建一个RealCall对象。 class RealCall( val client: OkHttpClient, val originalReque
kotlin协程suspend背后的逻辑和状态机思想
摘要:一:前置知识 1:状态机是什么 状态机state machine是什么?它就是用来表示一个对象处于什么状态然后决定正确状态下做正确的事。 比如说:饮料机在没有扫码的时候处于0状态,就不能调用开门这个方法,而扫码之后,饮料机的状态改变,才可以开门,但是扫了码就不能再扫了,状态不同,做的事也不同,状态之
Jetpack compose问题的记录
摘要:一:setContent的调用者 在activity中会调用一个setContent,然后里面放上我们的Jetpack compose之旅.... 在view体系中我遍历一个空的activity——xml什么都没有,的decor view的所有子view,与一个compose体系中setConten
理解Android的四种启动模式
摘要:一:前言 四种模式分别为standard, singleTop, singleTask, singleInstance。自己应该明确一个概念先,single到底要single什么。每一个应用app都有一个包名,然后每一个应用都会有一个task,这个task和包名对应起来,如果要创建一个新task,名
Handler消息机制 笔记
摘要:这是笔记,没有源码分析和详细过程,只有自己总结出来的重点,源码分析看参考资料,前辈写的很好。 一个线程,一个Looper,一个MessageQueue,多个Handler MessageQueue单链表结构 使用ThreadLocal机制保证一个线程一个Looper:https://www.cnbl
ViewRootImpl的连接时机
摘要:ActivityThread在使用handleResumeActivity方法调用了activity的onResume方法之后,就调用了 wm.addView(decor, LayoutParams) wm其实是WindowManagerGlobal 所以调用了 WindowManagerGloba
Activity启动流程 stop的理解
摘要:当启动一个activity的时候 onCreate --> onStart > onResume 当启动另一个activity的时候: old activity onPause new activity onCreate --> onStart > onResume old activity onS
viewmodel的存取流程
摘要:一:获取view model的代码 public <T extends ViewModel> T get(@NonNull String key, @NonNull Class<T> modelClass) { ViewModel viewModel = mViewModelStore.get(ke
在jetpack compose中获取Application实例的方法/避免作用域结束导致协程取消
摘要:前言: 想知道如何获取这个application实例的起因是关于协程的取消。 于是我创建了一个Application类,并在其中创建了一个CoroutineScope的变量。 class MyApplication:Application() { val applicationScope = Cor
如何在子线程中更新UI
摘要:一:报错情况 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. at androi
implementation vs api
摘要:https://jeroenmols.com/blog/2017/06/14/androidstudio3/ https://stackoverflow.com/questions/44413952/gradle-implementation-vs-api-configuration 看这两篇可解惑
classpath 和 implementation的区别
摘要:https://stackoverflow.com/questions/34286407/gradle-what-is-the-difference-between-classpath-and-compile-dependencies/69631709#69631709 简单来说就是,classpa
关于Context
摘要:getApplicationContext和getApplication返回结果一样,只是两者作用域不一样,getApplicationContext在所有context子类中都可以使用,getApplication只能在activity,或者service中使用(其实这也满足了大部分要求了) ge