入门的时候看《google android入门》,后来看《android 4 高级编程》,现在看Developers文档。
给我的感觉是,入门书籍没白看,高级编程这本书浪费钱了,翻译一般,而且内容与Developers 文档雷同。
要说有不同的地方,就是作者加了一些例子,如ToDoList。而且看Developers 文档,详尽,明白。
今天主要看了Activities,要点如下:
1 当要保存UI的状态的时候,可以不自己手动保存,系统会自动完成。但是如果当要自己重写onSaveInstanceState() 的时候,
最好是要super.onSave....,否则系统自动帮我们完成的保存UI状态的便利就没了。
2 onSaveInstanceState(),系统并不保证一定会调用这个方法,尤其是在用户按下返回按钮的时候。鉴于此,应该在这个方法里
保存一些非持久性数据,而对于持久性数据的保存,应该放在onPause()中。
3 对于资源的释放,由于onDestroy()方法并不能保证一定会被调用(如在onCreate() 中调用finish()),那么最好是放在
onStop()中。
4 onSaveInstanceState() 的调用时间并不很确定,有可能在onPause() 之前,也有可能在onStop()之前。
5 在开启新的Activity的时候,新旧两个Activity的方法调用有重合的地方。如下:
- Activity A's
onPause()
method executes. - Activity B's
onCreate()
,onStart()
, andonResume()
methods execute in sequence. (Activity B now has user focus.) - Then, if Activity A is no longer visible on screen, its
onStop()
method executes.
6 在配置发生改变的时候,有两种处理方式。
A 将比较大的数据(比如从Internet获取到的)以某一对象的形式,放在 Object onRetainNonConfigurationInstance() 回调方法
中,并放回它。这样activity在onCreate的时候,调用getLastNonConfigurationInstance()来获取刚刚保存的数据对象。这样做
的好处就是可以提升用户提样,让用户不必再次获取一次比较大量的数据,当然这些数据要与当前Context无关,否则可能会发
生内容泄漏(就是有一些垃圾得不到回收,因为当前还保留着一些与Context相关的引用)
B 在Activity里配置 configChanges,并且重写onConfigurationChanged方法。但是这么做,要完全负起责任。因为就像选装屏
幕这种事件, 一旦定义了configChanges = "orientation|screenSize",那么除非自己做处理,否则是不会自动在layout 与 layout-
land之间做转换。
That's All.