分类: 笔记

个人笔记记录分享

54 篇文章

Android-AIDL
1. AIDL简单使用 AIDL服务端 AIDL客户端 2. in、out、inout的区别 in 表示客户端传入的参数 (如:book), 服务端可以完整接受到改对象,但对其修改不会会同步到 客户端传入的参数对象 out 表示客户端传入的参数 (如:book), 服务端接受到的对象为空对象,并且服务端重新new修改改对象,并不会影响客户端传入的参…
Android-Activity启动流程简析
1. 普通Activity创建 - activity向Instrumentation请求创建 Instrumentation通过AMS在本地进程的IBinder接口,访问AMS,这里采用的跨进程技术是AIDL。 然后AMS进程一系列的工作,如判断该activity是否存在,启动模式是什么,有没有进行注册等等。 通过ClientLifeCycleMa…
Android-Window机制token验证
Activity拥有自己PhoneWindow以及WindowManager,同时它的PhoneWindow拥有token;而Application并没有自己的PhoneWindow,他返回的WindowManager是应用服务windowManager,并没有赋值token的过程 token是个Binder对象,他持有ActivityRecord…
Android-Context、Window基础解析
1. Context Context是应用程序与系统之间沟通的桥梁,是应用程序访问系统资源的接口 Context文章源链接 使用到了装饰者模式,把封装操作实现在ContextImpl中。 ContextProvider使用的是Application的context,Broadcast使用的是activity的context Activity的get…
Android-如何判断Activity 上是否有弹窗?
Activity 在 attach 阶段创建了 PhoneWindow,并将 AppToken 存储到 PhoneWindow 中,然后通过 createLocalWindowManager 创建了一个本地的 WindowManager,该实例是 WindowManagerImpl,构造传入的 parentWindow 为 PhoneWindow。…
kotlin-协程基础
1. Flow替换Sequence(SequenceScope类上使用了RestrictsSuspension注解) 2. 冷数据流:flow (消费者消费时才会生产数据) 实际是通过SafeFlow类创建的Flow对象。SafeFlow继承自AbstractFlow。而AbstractFlow同时继承了Flow和 CancellableFlow两…
kotlin-协程异常分析处理(一)
1.CoroutineScheduler internal class CoroutineScheduler(...) : Executor, Closeable { @JvmField val globalBlockingQueue = GlobalQueue() fun runSafely(task: Task) { try { task.ru…
kotlin-协程
1. 基本认识 Kotlin 的编译器检测到 suspend 关键字修饰的函数以后,会自动将挂起函数转换成带有 CallBack 的函数 suspend fun getUserInfo(): String { withContext(Dispatchers.IO) { delay(1000L) } return "BoyCoder" } // Co…
Kotlin-inline、nonline、crossinline
1. inline java中有一个编译时常量的概念,即编译阶段就会确定变量的值,并直接将确定的值- 替换到调用的地方。 kotlin中使用 const val 用于定义编译时常量 函数相应的则使用 inline,并且还会内联当前函数体内的函数。 fun A(B: ()->Unit) { B() print("A") } // 调用A函数的时…
Kotlin-不变型、协变、逆变
1. 子类型 任何时候,如果要使用 类型A 的值,都能用 类型B 的值作为替换(当做 A 的值),称 B 是 A 的子类型。 2. 泛型中的子类型 如果List要成为List的子类就必须满足下面两个条件: 1. List中方法接收参数的范围 不得小于 List的方法 2. List中方法返回值的范围 不得大于 List的方法 // List带泛型的…