关于Android开发的思考

  1. 内存泄漏并不是因为持有了Activity,而本质上要分析GC_ROOT才行,你想想看setOnClickListener传入的匿名内部类会泄漏吗?GC_ROOT包括活跃的线程、虚拟机栈(栈帧中的本地变量表)中引用的对象、本地方法栈中JNI(即一般说的Native方法)引用的对象、方法区中类静态属性引用的对象、方法区中常量引用的对象。另外我们常说的协程泄漏、线程泄漏本质上就是内存泄漏的一种。
  2. Jetpack里面的ViewModel并不是实现MVVM的,他只是为了解决由于Configuration变化导致的Activity销毁重建导致的数据丢失问题。实现MVVM的是Jetpack里面的DataBinding。但不排除以后Google会为ViewModel增加MVVM的功能。
  3. 消息机制里面的MessageQueue并不是严格意义上的队列,根据队列的数据结构定义,队列是一种只能从队尾插入、从队头出队的线性表,而MessageQueue会根据Message的when字段去从不同的位置插入Message。所以从严格意义上来说,MessageQueue只是一个普通的线性表,准确来说就是单向链表。