自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 并发编程可重入锁

并发编程

2024-09-27 09:36:13 358

原创 Launch解析

Android 协程Launch解析

2024-09-26 15:09:02 210

原创 Android 存储路径

限制了应用程序对外部存储空间的操作权限 就算是通过申请READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限。给权限后 内部存储不能访问 (data/data) 外部存储可以访问(storage/emulated)通过File路径访问:File路径可以直接构造文件路径也可以通过MediaStore获取文件路径。也不能读写整个外部存储空间中的目录 应用程序只能访问外部存储中的公共媒体目录。分区存储对内部存储或外部存储私有目录存储没有变更 变更的只是外部存储公有目录。

2024-09-26 14:36:14 814

原创 Andriod ViewModel

所以Activity下的Fragment可能用的不是一个ViewModelStoreOwner 主要看使用ViewModelProvider 传参。一个Activity一个viewModelStore 如果是同一个AViewModel 在同一个Activity get两次会从map里面取。AFragment 在AActivity里面 都by viewModel 这两个viewModel不一样。解释一个Activity只有一个viewModelStoreOwer。Activity 绑定ViewModel。

2024-09-26 14:27:27 159

原创 LiveData粘性事件

粘性 AActivtiy post finish BActivity 接收 BActivity还是能收到 因为BActivity 在Active状态 会回调 hook代码@2处使它return 一进入时让observer.mLastVersion = mVersion。核心代码 considerNotify。调用到dispatchingValue。

2024-09-26 14:25:51 213

原创 LiveData原理

其实就是 观察时把观察者放到mObservers里 key observer value owner的包装发送时 遍历mObservers调用observe一层包一层 LifecycleBoundObserver包装liveData observer。

2024-09-26 14:24:55 610

原创 Compose副作用

SideEffect并未接受任何Key值,所以,每次重组,就会执行其block.当不需要onDispose,不需要参数控制时使用SideEffect.SideEffect组要用来。如果在可组合函数中进行 耗时操作,监听变量变化,只执行一次的场景,使用LaunchedEffect,Compose提供了LaunchedEffect 用于创建协程。DisposableEffect也是一个可组合函数,当DisposableEffect在其key值变化或者组合函数离开组件树时,会取消之前启动的协程,

2024-09-26 14:18:31 1037

原创 Android 事件源头

DecorView是ViewRootImpl 的一个成员 变量 在viewRootImpl.setView时赋值先有DecorView再有viewRootImpl DecorView是在onCreate创建的 ViewRootImpl是在onResume创建的 windowManagerGlobal.addView()过会看下colin老师的图。

2024-09-26 14:14:26 591

原创 Android WMS分析

WindowManagerService

2024-09-26 14:11:37 439

原创 子线程刷新Ui不一定奔溃

是ViewRootImple的checkThread造成的奔溃 requestLayout时会调用checkThead()

2024-09-26 14:08:07 544

原创 Android UI是如何绘制出来的

Android UI是如何绘制出来的

2024-09-26 14:05:32 293

原创 Android Binder使用

程序运行的地址是虚拟地址进程A 向进程B通信mmap 映射了一块地址给进程B内存共享 技术没问题 一次拷贝都不需要使用困难(例如 怎样通知进程B去取数据)Binder 一次拷贝 帮你封装了内核态 和通知。

2024-09-26 13:52:07 628

原创 Android启动流程

Android启动流程

2024-09-26 13:50:35 1072

原创 Kotlin与ComposeCompiler对应关系

.升级Compose版本到1.5.31 看下关系对应表。

2024-09-26 13:39:39 272

原创 AS_Gradle_AGP对应关系

AGP与Gradle的关系 感觉就像Android与Java的关系 AGP必须要依赖Gradle。

2024-09-26 13:36:17 275 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除