Android 的 StrictMode

      从Android 2.3(API Level 9)开始,Android提供了一个程序性能诊断工具,它就是StrictMode。

      目前,StrictMode的能力与限制包括:

            1.基于线程的对磁盘读写,网络操作,以及自定义耗时操作等的监控;

            2.基于VM进程的对对象泄露(Activity对象,SQLite对象,未反注册对象,未关闭对象)的监控;

            3.可以检测到跨进程的耗时操作(当然必须是同步操作);

            4.当前不支持在jni中发生的网络与磁盘操作。

      随着Android的进化,StrictMode的功能也将越来越强大。

      当StrictMode检测到指定的事件发生时,它以指定的方式通知你:崩溃,弹出对话框,闪屏,logcat,dropbox。

      为什么磁盘操作也被认为是耗时的?

      虽然Android设备几乎都使用flash memory作为存储,读写速度堪比固态硬盘(SSD),但是建立在其上的文件系统可能会限制读写并发性,使得读写操作的时间不够稳定。

      例如,广为使用的YAFFS文件系统使用了一个全局的同步锁,在同一时间只允许一个磁盘读写操作,这使得磁盘读写的时间变得相当的不可靠。

      在程序的发布版本中,一定要注意关掉StrictMode,但是可以在Beta版本中保留它,以便从志愿者那里收集性能数据。

      参考连接:

      http://android-developers.blogspot.com/2010/12/new-gingerbread-api-strictmode.html

      https://code.google.com/p/zippy-android/

posted on 2012-10-26 20:38  frydsh  阅读(6412)  评论(2编辑  收藏  举报

导航