1 数据结构优化 使用SparseArray替换HashMap
SparseArray<String> sparseArray = new SparseArray<>();
sparseArray.put(1,"1");
sparseArray.put(2, "2");
String getSparseArray = sparseArray.get(2);
尽量使用application的context来替代和activity相关的context
3.内部Handler类引起内存泄露
当Activity finish后,延时消息会继续存在主线程消息队列中1分钟,然后处理消息。而该消息引用了Activity的Handler对象,然后这个Handler又引用了这个Activity。这些引用对象会保持到该消息被处理完,这样就导致该Activity对象无法被回收,从而导致了上面说的 Activity泄露。
要修改该问题,只需要把Handler类定义为静态即可,然后通过WeakReference 来保持外部的Activity对象。
4. 利用软引用和弱引用
(1). 软引用关联的对象在内存不足时被回收 (SoftReference)
(2). 弱引用关联的对象在JVM进行垃圾回收时总会被回收 (WeakReference)