3.11 用StrictMode保持应用程序敏捷性
Adrian Cowham
3.11.1 问题
你希望尽可能确保应用程序GUI的敏捷性。
3.11.2 解决方案
Android有一个StrictMode工具,该工具在Gingerbread版本中引入,能够检测所有“应用程序未响应”(ANR)错误发生的情况。例如,它能够检测发生在主线程(GUI线程)的数据库读写,并记录到LogCat。
3.11.3 讨论
我真希望在以前进行Java Swing桌面开发的时候能够使用像StrictMode这样的工具。确保Java Swing应用程序的敏捷性始终是个挑战——不管是新手还是熟练的工程师都会在UI线程上执行数据库操作,从而导致应用程序出现停顿。我们发现,这些停顿通常发生在QA人员(或者客户)用比工程师测试时更大的数据集运行应用的时候。让QA人员发现这些小缺陷是无法接受的,而且最终会浪费所有人的时间(以及公司的金钱)。我们最终在同行审查上投入了更多人力物力,才解决了这个问题,但是,拥有StrictMode这样的工具相对就会更加经济。
下面的示例代码说明了,在应用程序中启用StrictMode有多么简单:
//确保导入StrictMode
import android.os.StrictMode;
//在你的应用程序的android.app.Application实例的onCreate(...)方法中添加如下的代码行
if ( Build.VERSION.SDK_INT >= 9 && isDebug() ) {
StrictMode.enableDefaults();
}
请注意,我有意地忽略了isDebug()的实现,因为这在开发人员中做法不一。我建议仅在应用程序处于调试模式时启用StrictMode;将带有StrictMode的应用程序投放到Android Market是不明智的,StrictMode在后台运行,并且毫无必要地消耗资源。
StrictMode是高度可配置的,允许定制查找什么问题。
3.11.4 参阅
StrictMode可配置程度很高,你可以自定义所要查找的问题。