序列化

JNI/NDK

设计模式使用案例

观察者模式

定义一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都会自动收到通知并更新。

  • Android 中的 View.setOnClickListener() 就是观察者模式,按钮点击事件发生时,注册的监听器(观察者)会被通知。

装饰器模式

在不改变原有对象的前提下,动态地给对象添加额外的功能。强调包装而不是继承,避免类爆炸。

  • Java IO:BufferedInputStream 装饰了 InputStream,在原始读写功能上增加了缓存,提高效率。

  • Java 集合:Collections.synchronizedList() 方法装饰一个 List,在原有方法的基础上增加了 synchronized 关键字,实现线程安全。

建造者模式

将一个复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。解决构造函数参数过多、可选参数复杂的问题。

  • StringBuilder:通过链式调用一步步构建字符串;

  • 安卓中的 AlertDialog.Builder:通过 setTitle(), setMessage(), setPositiveButton() 等方法,最后 create().show()

  • okHttp:OkHttpClientRequest 都是 Builder;

策略模式

定义一系列算法,把它们封装起来,使得它们可以互相替换,客户端可在运行时选择不同的算法。强调行为可替换

  • 排序算法:Java 的 Comparator,可以传入不同的比较策略,达到不同的排序效果。

  • 支付系统:不同支付方式(支付宝、微信、银行卡)可以抽象为不同策略,统一接口 pay(),在运行时根据用户选择切换。

APK 启动流程

MVC、MVP、MVVM

APK 打包流程和反编译

安卓系统架构

内存优化

卡顿优化