`
Teok
  • 浏览: 150370 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

New Gingerbread API: StrictMode阅读笔记

阅读更多
原文:New Gingerbread API: StrictMode , posted by Brad Fitzpatrick, an Android Software Engineer who worries unreasonably about responsiveness.

先说作者,刚开始还没太注意,写这篇帖子时点开它的博客后发现了这个:http://www.danga.com/,有兴趣的童鞋可以去看看这个公司的开源软件(搞web的会有惊喜哦)。他是danga的创始人。

StrictMode是用于监测访问disk或者network时的低响应和ANR的,是一个development tool.
它的用法和具体细节详看api doc和这篇文章,碰到问题呢,可以去StackOverFlow的strictmode去查或问。

我对文章有下面几点理解和总结:
1.与monkey类似,StrictMode也是用于保障app质量的一个给力工具,前者更倾向于系统的稳健,后者呢更专注软件的性能
2.作者给出一个实例(文中Our Experience那一段)。大概意思就是他们自己搞了一个dogfood的玩意供整个team使用,使用dogfood之后,StrickMode会被开启,并且在Gingerbread开发过程中出现的那些violations(就是被StrickMode机制检测到的问题)都会被日志记录下来,然后有一个叫MapReduce的玩意,每小时执行一次,它会把这些log生成成一份interactive report(就是人看起来比较舒服的报告)。(原文:Every hour a MapReduce job runs and produces an interactive report of all the event loop stalls, their stack traces (including cross-process ones), their latency percentiles, which processes/packages they appear in, etc.)
据作者说,用这些从StrictMode得到的数据,整个google android解决了好几百响应不能的bug和动画问题(哇塞,听起来很诱人哪)。(原文:Using the data from StrictMode we fixed hundreds of responsiveness bugs and animation glitches all across the board. We made performance optimizations in the Android core (e.g. system services and providers) so all apps on the system will benefit, as well as fixing up tons of app-specific issues (in both AOSP apps and Google apps). Even if you’re using Froyo today, the recent updates to GMail, Google Maps, and YouTube all benefited from StrictMode data collection gathered on Gingerbread devices.)
不过从这个实例看出,想从StrictMode长久受益,前期的投入还是不低的,起码得开发一套dogfood build系统,一个定时报告生成系统MapReduce。这就跟我现在这家公司用的hudson一样,很庞大也很复杂,需要很多人力,但是呢,的确对制造高质量的软件很有帮助(我问了在联想的同学,他们是有这想法,一直没实施起来)。
3.让你的app更smooth(性能表现更好),去Thread, java.util.concurrent.*和 Handler, AsyncTask, AsyncQueryHandler, IntentService 这些类里面找办法。
4.HoneyComb将会有一项新机制:当你在main thread(也叫ui thread)里面进行network操作时,会报错。但是之前的sdk还没有这样的机制。
5.我们知道,android的disk用的类似ssd的flash(或者就是),这东东很快吧,但是快归快,你任何牛掰的disk没有file system总不能用吧。android设备上大多用的文件系统是一个叫YAFFS的玩意,这玩意有一个全局锁(global lock),所有的操作都可能使用这个锁,那么可想而知,某一刻这锁被别人占了,那你的disk操作就可能被等待了。
还是看原文:
You can’t depend on the flash components or filesystems used in most Android devices to be consistently fast. The YAFFS filesystem used on many Android devices, for instance, has a global lock around all its operations. Only one disk operation can be in-flight across the entire device. Even a simple “stat” operation can take quite a while if you are unlucky. Other devices with more traditional block device-based filesystems still occasionally suffer when the block rotation layer decides to garbage collect and do some slow internal flash erase operations. (For some good geeky background reading, see lwn.net/Articles/353411)
6.嗯,没了。:)


ps:鉴于主站被和谐,我把原文下载一份贴上来。。
分享到:
评论

相关推荐

    strictMode介绍

    StrictMode是自Android 2.3(Gingerbread)版本起引入的一个功能,它作为开发者模式的一部分,为应用程序提供了一种检测和报告应用行为中潜在问题的机制。通过启用StrictMode,开发者可以监控并捕获应用在运行时可能...

    xposed api-82

    "api-82"指的是该API兼容Android 2.3.3(API级别82,即Gingerbread MR1版本)。 Xposed API-82包含两个主要文件: 1. **api-82.jar**:这是核心的Xposed库文件,其中包含了开发者编写Xposed模块所需的所有接口和类...

    ACME Gingerbread Kit:ACME姜饼套件是ACME Resource Pack的主题变体。-开源

    **ACME Gingerbread Kit** 是一个为ACME Resource Pack打造的独特主题变体,专注于创造一个充满圣诞节和冬季风情的游戏体验。这个资源包以其创新的纹理设计,为玩家提供了丰富的建筑素材,让玩家能够构建出富有节日...

    gingerbread

    1. **传感器API的改进**:Android Gingerbread扩展了Sensor类和SensorManager服务,提供了更多的接口和事件类型,使开发者可以更方便地访问和管理设备上的各种传感器。 2. **低功耗传感器支持**:为适应日益增长的...

    android Camera 系统,自定义相机

    Camera1 API适用于Android 2.3(Gingerbread)至Android 4.3(Jelly Bean MR2),而Camera2 API是自Android 5.0(Lollipop)开始引入的,提供了更强大的功能和控制。 1. Camera1 API:这是早期的API,主要用于基本...

    Android SDK NDK API 对应关系

    - **API Level 9**:对应Android 2.3(Gingerbread),增强了输入法、摄像头等功能。 - **API Level 10**:对应Android 2.3.3(Gingerbread MR1),小幅更新。 - **API Level 11**:对应Android 3.0(Honeycomb),...

    android-2.3.3-gingerbread-src.zip

    6. **库和API**:Android SDK提供了丰富的API,如SQLite数据库、多媒体处理、网络通信等,方便开发者构建应用程序。 7. **编译工具链**:从源代码到可执行程序,需要经过编译、链接等步骤,这些工具链如GCC、NDK等...

    Android APIs Reference API Level1~API Level19离线版

    API Level 10(Gingerbread)加强了对蓝牙2.1的支持,提升了设备间的数据传输效率。 API Level 11(Honeycomb)是专为平板电脑设计的版本,引入了ActionBar和Fragment,使得在大屏幕设备上构建复杂的用户界面变得...

    Pro Android学习:联系人API

    前者主要用于Android 2.3(Gingerbread)及更早版本,后者则从Android 3.0(Honeycomb)开始引入,是目前主流的接口。ContactsContract API提供了更强大、灵活和高效的方式来处理联系人数据。 1. **...

    android 2.3.3 source api 10

    Android 2.3.3,又称为Gingerbread(姜饼),是Google在2010年12月推出的Android操作系统版本,对应的API级别为10。这个版本的发布为移动设备带来了诸多改进和新特性,包括性能优化、电池管理、用户界面升级以及对多...

    android历史版本以及对应的API level

    ### Android历史版本及其对应的API Level #### 引言 自2008年首款Android设备问世以来,Android操作系统已经经历了多次重大更新与迭代。每个版本不仅带来了新的功能、改进的安全性和用户体验,还伴随着一个独特的...

    Android中文API6-7.rar

    Android API级别6对应的是Android 2.3 (Gingerbread)版本,而API级别7对应的是Android 2.2 (Froyo)。这两个版本在Android历史上具有重要意义,因为它们引入了许多关键功能和改进。 在Android 2.3 (Gingerbread)中,...

    android开发中文API

    Android开发中文API是针对那些在学习Android开发过程中遇到语言障碍,特别是英语阅读能力有限的开发者的一项重要资源。这个API文档翻译项目,如“AndroidBox0.5”所示,旨在为开发者提供一个更易于理解的中文环境,...

    XposedBridgeApi合集(54~89)

    而XposedBridgeApi-54.jar则相对老旧,可能适用于更早版本的Android系统,比如Android Gingerbread (2.3)。在开发Xposed模块时,选择与目标设备系统版本相匹配的API版本是非常关键的,因为错误的版本可能导致模块...

    ApiDemos_2.3

    1. **Canvas**和**Bitmap**:ApiDemos展示了如何在Canvas上进行绘图和处理位图,包括自定义视图和复杂的2D图形绘制。 2. **OpenGL ES**:针对移动设备优化的3D图形库,ApiDemos包含了一些简单的OpenGL ES 2.0示例。...

    android.jar

    开发者可以通过阅读源码学习Android API的工作原理,进行系统级别的修改或自定义开发。 4. **API级别和兼容性**: "android.jar"的不同版本对应不同的API级别,API级别是衡量Android系统功能的一个标准。开发时,...

    Android史上最全的API合集

    而Android 2.3(Gingerbread)API则加强了电源管理,优化了多媒体支持,为开发者提供了更多创新的空间。 在Android开发中,"android.widget"包尤为重要,它包含了Android UI框架的核心组件,如Button、TextView、...

    android 中文API 合集

    在Android开发领域,掌握API是至关重要的,特别是对于新手开发者来说,中文API文档更是学习的利器。本合集,被誉为“史上最全的中文API合集”,由作者精心搜集整理,耗时近两个小时,包含了国内各个Android翻译组的...

    Android 2.3.3-2.3.7 sdk API10

    Android 2.3.3-2.3.7 SDK API 10是Android操作系统的一个重要版本,它在2010年12月发布,代号为“Gingerbread”(姜饼)。这个版本带来了许多改进和新特性,对开发者来说具有深远的影响。下面将详细阐述其中的关键...

Global site tag (gtag.js) - Google Analytics