1. http://developer.android.com/guide/是学习android最好的参考。
2. Activity开发一般采用MVC模式,在.xml描述布局和组件,组件中的ID等属性会自定编译进R.java.
3. activity、service、ContentProvider必须在manifest中声明,但是BroadcastReceiver可以在代码中动态注册
5. 有时候真机在DDMS中被识别成???,需要使用adb命令重新启动服务,ubuntu下为:sudo adb kill-server sudo adb start-server.
6. SharedPreferences本质是通过文件存储一些数据,文件可以在data/data/shared_preferences目录下找到。这种方式可以跨应用。通过设置RZControllerApplication.getAppContext().getSharedPreferences(name,mode)中的mode属性为:MODE_WORLD_READABLE ||MODE_WORLD_WRITEABLE
7. 可以通过OpenFileOutput和OpenFileInput方法,来操作文件进行持久化。同样可以在data/data目录下找到,貌似也不能跨应用
8. Android的DB相关的关键的类就是SQLiteOpenHelper、SQLiteDatabase、Cursor这3个。一般需要自己实现SQLiteOpenHelper的onCreate()方法,这个类类似于ConnectionFactory。SQLiteDatabase类似于JDBC中的Connection接口。查询结果都是cursor。如果应用中的数据要共享给其他应用一定要使用context Provider
9. 在Activity中获取到Cursor后,要执行一个startManagingCursor()方法,进行托管
10. res中文件的分包原则:1.不支持2级子目录,2。定义顺序是:MCC and MNC>Language and region>Screen size>Screen aspect>Screen orientation>Dock mode>Night mode>Screen pixel density (dpi)...详细及最新顺序参看以下:http://developer.android.com/guide/topics/resources/providing-resources.html。
11. 找到数据库文件后,可以在adb shell下,用sqlite3命令连接上数据库进行操作
12. activity的back stack是一个Last In First Out模型
13. activity最重要的生命周期方法是onCreate()和onPause(),前者需要完成activity的初始化工作,后者需要完成重要数据的持久化
14. 在屏幕横竖屏切换的时候,activity会被destroy,然后recreate
15. 从android3.0之后,引入了fragment和loader机制,之前的平台是没有的
16. android系统有多任务机制,设备的HOME页面是大多数任务的开始页面。有多个task,也就有多个back stack
17. 在back stack中的activity永远不会重新排列,所以如果一个activity被多次引用,将会创建多个实例 (仅限标准的activity)
18. 当由于系统释放资源,而destroy掉activity之后,系统依然会记得activity在back stack中有一席之地。当重新显示该activity时,需要recreate,而不是resume
19. 通过startService()方法启动的service,生命周期长于启动它的component。通过bound方式绑定的service,生命周期和绑定它的component相同
20. service是跑在所属application的主thread中,不会默认新开thread,所以需要编码创建新thread
21. 不能在工作线程中去更新UI,使用Activity.runOnUiThread(Runnable);View.post(Runnable);View.postDelayed(Runnable, long)或者AsyncTask
22. 网络流量记录在/proc/net/dev文件下,可以用cat命令查看,也可以写程序读取解析来分析流量,在android2.2之后的平台,可以用TracfficStats类来获取流量信息
23. 可以通过继承Application类,并在manifest文件中配置,来使用应用内共享的全局变量
24. 与服务端交互时,可以传输比较少的数据量,然后在两端分别解析。举例来说,只通过网络传送1、2、3,然后在两端解析为1-success,2-fail,3-exception。达到节省流量的目的。类似于自定义协议