k哥的android开发笔记(更新至2012.05.03)

来源:互联网 发布:软件危机与软件工程 编辑:程序博客网 时间:2024/05/19 09:09

作者:  k歌之王    


android作为最火热的手机开发平台, k哥怎么会错过呢。 android确实带来了许多不一样的开发体验。   我会不断更新这篇笔记, 跟大家一起学习:)


1) 开始搭建环境之前, 先把\android-sdk-windows\temp目录删除。

2) 如果你使用的android 2.2,   使用adb命令行会报错, 请把platform-tools下的文件复制到了tools下面  

3) 由于ANDROID模拟器基于ARM指令集架构, apk可在真机运行, 就可以跑在模拟器上。 步骤:打开模拟器>>进入android sdk tools目录 >>adb install f:\TTPOD.apk     半分钟后提示安装成功, 就可以在模拟器玩天天动听啦。  

4) 关于调试程序, 如果以前用carbide做过symbian开发, 对eclipse的调试流程会比较熟悉。当然仅限于sdk.   据说ndk调试很麻烦~~

5) eclipse点击layout\mail.xml 退出。 确认环境变量JAVA_HOME路径。 升级java版本到1.6即可。 (命令行输出java -version查看当前java版本)

6) 有多个activity,  调用顺序由AndroidManifest.xml决定

7) 如果使用了findViewById来获得控件对象, 需要在布局文件里指定控件资源的ID

8)  Android UI操作必须在UI线程里。  所以android最常用的更新屏幕的方法是利用Handler来实现UI线程的更新。 (和symbian类似)。 也可以使用postInvalidate方法直接在线程里更新界面。 

9) android提供 VIEW, Surfaceview类作为MVC视图类的基类的开发框架。 SurfaceView相比View,刷屏效率更高,使用双缓冲来显示,SurfaceView提供给需要直接画像素而不是使用窗体部件的应用来使用的。 SurfaceView和View的明显不同在于, SurfaceView不需要通过线程来更新视图。 更新方法是先lock画布,得到画布,在画布绘制,再unlock画布。

10) android数据存储有4种方式:

      - Shared Preferences: 只存储基本数据类型如boolean。 只供本程序使用。 

     -  Files: 通过FileInputStream和FileOutputStream对文件操作。 一个程序无法读写其他程序的文件。

     -  Network:

     -  SQLite: 针对大量数据进行存储维护


11) 和symbian需要声明程序涉及的capability类似, android程序需要在AndroidManifest.xml文件给予权限。 例如程序需要访问外部网络:代码如下:  

         <uses-permission android:name"android.permission.INTERNET" />

12)  使用NDK, 每次build前先clean.  生成.so后把project也clean再build。 不然经常有意想不到的问题。

13)   admob最新sdk只能用android 3.2 SDK. 相应的也要升级eclipse到3.6(helios),ADT也要升级。 通过manifest里设定minSdkVersion=8保证程序兼容android 2.2

14)   proguard用来混淆和精简JAVA代码。 我的程序从720K精简至416K,效果明显

15)    AudioTrack类:  音频播放类, 支持将pcm buffer数据交给硬件播放(也只支持PCM, amr,aac,mp3等其他格式只能自己软解)。

分static和stream两种mode。前者适用于小文件一次性交给硬件播放, 后者是一个个chunk给硬件播放(流式的).
16)   在android 2.2之后, 读写SD卡要增加权限 android.permission.WRITE_EXTERNAL_STORAGE
17) HTTP下载最好用HttpURLConnection接口(尤其在EDGE环境下), 这是GOOGLE持续在改善和优化的API,。  而HttpClient在android 2.3及以上版本则不被GOOGLE推荐使用。



原创粉丝点击