上文抛出了一个疑问:UI 线程是在哪里绑定 Looper 呢?欲解此题,仍旧从 Android 源码着手,但是 Android 的代码量是以 GB 为单位来计算的,若是一个一个来看,只见树木不见森林,未必能理出个头绪。
不妨通过 Eclipse 这一工具,设置 breakpoint,进入 debug,看一看执行流程。新建一 Android Project,创建简单的 Activity 类,在 onCreate 方法中设置断点,应用进入 debug,在断点处暂停。
[ Read More » ]
10 3 月, 2010 in
Software | tags:
Android |
1 Comment
Toast 和 Looper,一个属于 android.widget,一个属于 android.os,两个貌似联系不怎么紧密的类,却通过下面这个异常联系到了一起:
E/AndroidRuntime( 1819): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() |
E/AndroidRuntime( 1819): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
[ Read More » ]
2 3 月, 2010 in
Software | tags:
Android |
3
Comments
当 Palm 放出 Web OS 时,我自个琢磨:是不是 PC 软件的“泛Web化”浪潮也要席卷移动平台了?当传统的 PC OS 伴随着 Windows 一路升级,软件也从一个一个本地窗口浓缩到了浏览器里,从全球来看最能代表这种潮流的是 E-Mail 的 Web 收发,而从中国来看,WebQQ 的出现则代表了这一个潮流。
Tencent 推出 WebQQ 的好处正在彰显:客户端无需升级,免除未及时升级所带来的风险;无需再为某一特定 OS 开发,只要符合 HTML/JavaScript /CSS 标准,即可运行在所有 OS 上。而即将推出的 WebQQ Mini 则将QQ引入到移动平台中,只要系统中有浏览器,则即可使用 QQ。再也不会像以前那样,分别为 WM、Symbian、Linux、IPhone、 MTK 等开发本地应用。
[ Read More » ]
15 1 月, 2010 in
Business | tags:
Android |
No Comments
MediaProvider 的实质是 Android 的 Core Applications 之一,和 Market 的 app 一样,并无神秘之处,其重要性就是提供了对 media 的操作,而刨根究底,这一操作正是通过同名类 MediaProvider 来实现的。
查阅该类源码,规模不小,再加以纠缠着内部类,第一眼很容易发懵,耐下性子整理出类图如下。正所谓“一个好汉三个帮”,单打独斗固然可以呈现出盖世英雄之势,但是若能团结众人,融合各方能力则能成就一番霸业。史书上的股市是这样,软件开发也如此,大到一个软件产品需要团队来开发,小到一个细微功能也是需要若干相关类来协同。此间厉害可以由类图一目了然。
[ Read More » ]
12 1 月, 2010 in
Software | tags:
Android |
13
Comments
认识新鲜事物,忌讳一头沉入细节,只见树木不见森林,宜先远远的看,从制高点一览全局,正所谓高屋建瓴。从事 Web Application 的时候,Web.xml可以帮助建立对系统运作流程的理解,对于 Android Application,则一样需要先找到这么一个制高点,这个制高点就是 AndroidManifest.xml。
统揽 AndroidManifest.xml,可以了解其由三个基础组件构成,分别是负责向外界提供数据访问的 MediaProvider,监听事件的 MediaScannerReceiver 和 实施扫描的 MediaScannerService。捏柿子要挑软的捏,看代码就挑短的先看,以免长篇累牍的代码让自己望而生畏,立马退避三舍,从代码量来看 MediaScannerReceiver 最小,这里就最先从 MediaScannerReceiver 来开始剖析。
[ Read More » ]
5 1 月, 2010 in
Software | tags:
Android |
3
Comments