Android性能优化
文章平均质量分 79
包含内存优化、启动速度优化、数据结构优化、APK瘦身优化等。
夜光草2
记录一个程序猿的成长之路!
展开
-
MMKV与SharedPreference的比较(三)
SharedPreferences 使用 xml 格式为 Android 应用提供一种永久数据存贮方式,xml文件位置一般都在/data/data/包名/shared_prefs目录下,并且使用键值对的方式来存储数据的。虚拟内存被操作系统划分成两块:用户空间和内核空间,用户空间是用户程序代码运行的地方,内核空间是内核代码运行的地方。为了安全,它们是隔离的,即使用户的程序崩溃了,内核也不受影响。可见,将数据写入文件需要将数据拷贝两次,再写入到文件中,如果数据量过大,也会有很大的性能损耗。原创 2023-03-28 16:57:12 · 283 阅读 · 1 评论 -
MMKV for Android 多进程设计与实现(二)
例如,说到进程锁第一个想到的就是 pthread 库的 pthread_mutex,创建于共享内存的 pthread_mutex 是可以用作进程锁的,然而 Android 版的 pthread_mutex 并不保证。这些新的键值都 append 在原有写指针后面,可能跟前面的 key 重复,也可能是全新的 key,而原写指针前面的键值都是有效的。对于文件锁来说,前者是满足的,后者则不然。正如前文所述,发生内存增长的时候,必然已经先发生了内存重整,那么原写指针前面的键值也是统统失效,处理逻辑跟内存重整一样。原创 2023-03-28 15:01:51 · 425 阅读 · 0 评论 -
MMKV原理(一)
MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化 / 反序列化使用 protobuf 实现,性能高,稳定性强。将 MMKV 和 SharedPreferences、SQLite 进行对比, 重复读写操作 1k 次。原创 2023-03-28 14:53:11 · 176 阅读 · 0 评论 -
解决由Handler引发的内存泄漏
在使用Handler更新UI的时候,Android Lint 给出了警告:This Handler class should be static or leaks might occur,意思是说:这个Handler 必须是static的,否则就会引发内存泄露。这种情况该如何解决呢?转载 2016-03-05 09:54:20 · 314 阅读 · 0 评论