摘要:
一。java层优化:1. 采用android特有的数据结构:用 android.util.SparseArray android.util.SparseBooleanArray android.util.SparseIntArray替代 java.util.ArrayList用 android.util.LruCache替代HashMap android.util.Pair储存两个对象2. Sqlite最快执行方式:?SQLiteStatement stmt = db.compileStatement("INSERT INTO tables VALUES (?,?)");s 阅读全文
摘要:
前言 上一篇博客讲解了Handler实现线程间通信,这篇博客讲解一下Handler运行的原理,其中涉及到MessageQueue、Looper。简要来讲,Handler会把一个线程消息发送给当前线程的消息队列,从最后Handler会处理消息队列中的消息,这里的消息队列就是MessageQueue,而管理消息队列的,就是Looper。 Handler、MessageQueue、Looper三者间的关系如图: 从上图可以看出,Handler发送线程消息到当前线程的MessageQueue中,而Looper用来管理MessageQueue,它从MessageQueue中取到消息交给Handle... 阅读全文
摘要:
山水含清晖Android内存分析和调优(中)在前文中讨论了如果使用adb shell procrank, dumpsys meminfo和showmaps分析进程的内存占用情况。本文将继续细化,具体分析导致内存过大的dalvik heap。Dalvik heap分析和优化Dalkvik heap是最常见的android应用内存优化的对象。通过上文的分析,我们可以通过adb shell的命令,知道用了多少dalvik heap。在ADT的eclipse的DDMS视图,可以更细致的查看这些内存用到什么地方。参考DDMS使用说明(搜索viewing heap),我们可以首先在devices view 阅读全文
摘要:
最近我们的android app占用了大量内存,于是领导安排做减少内存占用的工作。要优化内存,首先要做的就是分析内存占用情况。android提供了多个工具和命令进行内存分析。第一层 Procrank很粗略的,可以使用"adb shell procrank",结果类似于PID Vss Rss Pss Uss cmdline......2319 42068K 42032K 13536K 7028K com.xxx......该命令可以列出当前系统所有进程的内存占用情况。PID是进程ID。Vss是占用的虚拟内存,如果没有映射实际的内存也算进来。Rss是占用的物理内存。是共享内.. 阅读全文