@[Android编程权威指南读书笔记]
添加中,方便自己初学android进行复习
设备旋转与Activity生命周期
设备旋转时,系统会销毁当前的Activity实例,然后创建一个新的实例,因此会导致当前页面的状态变量被重置。如果想保存这些状态变量,可以重写onSaveInstanceState(Bundle)方法,将数据保存在Bundle中。Bundle是一种类似HashMap的键值对数据结构,它会在onCreate(Bundle)中作为参数传入。(在Bundle中保存的数据只能是基础数据类型和实现了Serializable或Parcleable接口的对象)
onSaveInstanceState(Bundle)方法何时被调用
onSaveInstanceState(Bundle)方法通常在onPause(),onStop(),onDestroy()方法调用前被调用,因为系统不会回收正在运行的activity,只有进入暂停状态(onPause(),对应的是onResume()),停止状态(onStop(),对应的是onStart())才有可能被销毁,所以需要调用该方法保存状态,方便在重建activity后恢复。
Activity记录何时会被销毁
当用户点击后退键时,activity会被销毁,同时activity记录会被消除。此外,若长时间不适用activity,activity记录也会被消除。
布局文件中组件的layout开头的属性
一句话讲,layout_开头的属性用于告诉父组件如何放置自己,相对的不以layout开头的属性则用于设置组件的布局。可以参照layout_gravity和gravity属性。
fragment生命周期及与activity的区别
fragment的生命周期类似于activity的生命周期,但是所有activity共享一个activity栈,且生命周期由安卓操作系统管理。而fragment生命周期由托管的activity而不是操作系统调用。
FragmentManager
FragmentManager类具体管理的是fragment队列和事务回退栈。
fm.beginTranscation()
.add(R.id.fragment_container, fragment)
.commit();
add()方法中的视图资源ID有两个作用:
- 告诉managerfragment视图应该出现在什么位置
- 用作manager队列中fragment的唯一标识符
–P131