随笔分类 - Android
摘要:概述 通过 mmap 技术实现的高性能通用 key-value 组件。同时选用 protobuf 协议,进一步压缩数据存储。 标准 protobuf 不提供增量更新的能力,每次写入都必须全量写入。考虑到主要使用场景是频繁地进行写入更新,我们需要有增量更新的能力:将增量 kv 对象序列化后,直接 ap
阅读全文
摘要:概述 RecyclerView 的预布局用于 Item 动画中,也叫做预测动画。其用于当 Item 项进行变化时执行的一次布局过程(如添加或删除 Item 项),使 ItemAnimator 体验更加友好。 考虑以下 Item 项删除场景,屏幕内的 RecyclerView 列表包含两个 Item
阅读全文
摘要:## 概述 每个 Drawable 都有一个对应的`ConstantState`,这个 state 保存了 Drawable 所有的关键信息。由于 Drawable 的广泛使用,系统为了优化性能(节省内存占用),相同资源的 Drawable 都共享同一个`ConstantState`。这个的含义用较
阅读全文
摘要:数据库如何发生损坏 SQLite 数据库具有很强的抗损坏能力。在执行事务时如果发生应用程序崩溃、操作系统崩溃甚至电源故障,那么在下次访问数据库文件时,会自动回滚部分写入的事务。恢复过程是全自动的,不需要用户或应用程序的任何操作。尽管 SQLite 数据库具有很强的抗损坏能力,但仍有可能发生损坏。 1
阅读全文
摘要:在 Android 中,Room 为 SQLite 提供了高效稳定的抽象层,简化开发流程。RoomDatabase.java 是初始化数据库的重要构建组件,通过它我们可以添加RoomDatabase#Callback监听,RoomDatabase#Callback提供了以下回调接口: /** * C
阅读全文
摘要:概述 Android 在应用框架层为开发者提供了 SQLite 相关操作接口,其归属于android.database.sqlite包底下,主要包含SQLiteProgram, SQLiteDatabase, SQLiteSession, SQLiteConnectionPool和SQLiteCon
阅读全文
摘要:Bitmap内存模型 在 Android 2.2(API 8)及更低版本上,当发生垃圾回收时,应用的线程会停止(stop the world),这将导致卡顿。Android 2.3 添加了并发GC功能,这意味着系统不再引用位图后,很快就会回收内存。 在 Android 2.3.3(API 10)及更
阅读全文
摘要:以下针对 Android API 26 版本的源码进行分析。 在了解 之前,最好对 有初步的了解, 的实现主要借助 。`LinkedHashMap`的源码解析,可阅读 "Java——LinkedHashMap源码解析" 概述 其 Lru 是 Least Recently U
阅读全文