ReferenceQueue and Rumtime.gc()

前言

内存泄漏对于日常简单的业务开发而言 很常见也不常见(如果你还是说 Handler 那一套的话,除非你使用 Handler 做 timer,否则 总有一个时间 会释放所谓的内部类引用的 Activity 等对象)。一般作为业务开发能制造内存泄漏的情景,我遇到的有几种(当然可能存在更多的情况):

MMKV 和 mmap

前言

最近看了点 MMKV 的代码,其核心就是通过 mmap 来读写文件。当然还有多进程、序列化、扩容重排 key等问题(这些随便找篇文章都有讲)。本文主要通过 mmap 实现简单的文件的读写。

Bundle Parcel 和 ClassLoader

前言

前几天看到同事在讨论 动态代理类加载器 的一些问题,其实这些技术无论是客户端还是后端都已经用烂掉了。

动态代理 cglibjdk.Proxy 基本是 Java 后端面试的 “八股” 送分题。

DataBinding 解读

前言

Android 的应用层架构,其实一直在缓慢的进步,但是 Android 开发工程师却很少有进步。比如我,直到 2021 年才开始使用 dataBinding。

我初步在 RecyclerView 的 item 中试用了一下,感觉还是挺不错的。

工作中遇到的代码反例

前言

最近一直都是 copy 工程师和 scapegoat 工程师

不过也发现了一些些问题,也用来警示自己以后写代码 尽量 考虑全面(人无完人···)

反例1-下次进入 App,回到上次退出的页面

如下图

/img/in-post/tab-example.jpg

Java 泛型的见解

前言

写 RecyclerView 的 Adapter 时,感觉到了泛型理解不够深刻,也不够熟练,看了几天的泛型文档

https://docs.oracle.com/javase/tutorial/java/generics/index.html

下面的总结均是对于文档的学习和一些代码示例的运行。

为什么要使用泛型

代码复用

通常的代码复用是提取一个公共参数的函数,函数中的参数传的是各种不同的值。泛型也是类似,只不过泛型可以用于定义 class、interface、method 等等,泛型传递的是不同的 type。

Kotlin Coroutines VS Goroutines

前言

最近一直在看 Kotlin 协程,因为以前也写过 Golang,所以试着去对比了一下,发现了很多好玩的事情。

两种协程的比较

一个 Kotlin 的小例子

试问下面一段代码,执行结果是什么呢?

Kotlin Scope Function

前言

经常看公司里的人写的一些基础库(基于 Kotlin)看不太懂,总有各种关键字和函数,不知道他们是在刻意用还是咋地,所以学一波,就从出现次数最多的 Scope Function 开始了。