1.在不同的activity的生命周期中,当activity在运行,暂停,停止,和不存在这四种状态转换的时候,都会有相应的啊activity方法来发消息通知activity,下面是正常activity周期的运行过程
(1)onCreate() (此时对象实例存在在内存中)-->onStart() (此时视图部分或全部可见)-->onResume() (此时用户与当前activity交互)-->onPauses()-->onStop()-->onDestroy()
2.activity子类可以在activity的生命周期状态发生关键性转换时完成某些工作,我们叫它们为生命周期回调方法
3.通常在onCreate()方法中,activity可以来预处理以下的UI相关工作,
(1)实例化组件并将他们放置在屏幕上,(2)引用已实例化的组件,为组件设置监听器以处理用户交互,访问外部模型数据
4.通常我们能会使用。log.d(String.String)来打印某些消息,第一个参数是日志来源,第二个是日志内容
5.我们都是先调用超类的方法再去使用某些具体的方法,这些超类方法的调用不可缺少
6.当设备旋转后,系统会销毁当前的实例,然后创建一个新的实例,在运行时配置变更发生时,可能会有更合适的资源来比配新的配置,下面是创建水平模式的布局
右击res目录,选择New ->Android resource directory菜单项,写出相对应的资源特征,然后在待选的Orientation,然后点击>>按钮将它移动到已选的资源特征中去,确认选中下拉列表的Landscape选项,并确定目录名显示为layout-land,最后点击OK创建res/layout-land,然后在相对应的竖直布局中,将其布局文件复制到layout-land目录中去,两个文件的文件名必须是一样的,这样他们才可能以同一个资源ID被应用
7.在需要子件的布局中,我们可能会使用FrameLayout,FrameLayout是最简单的ViewGroup组件,它的子视图的位置排列都是靠他们自己的android:layout_gravity属性
8.使用onSaveInstanceState()这个方法来保存数据,该方法通常在onStop()方法前调用,这个方法默认把所有activity视图将自身状态数据保存在Bundle对象中,Bundle是存储字符串键与限定类型之间的一种结构,
9.可以通过覆盖onSaveInstance(Bundle)方法,将一些数据保存在bundle中,然后通过onCreate(Bundle)方法来取回这些数据,如下面的样子
先定一个键
private statIc final String KEY_INDEX = "index";
后覆盖onSaveInstanceState(bundle)
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInsstanceState);
savedInstanceState.putInt(KEY_INDEX,mCurrentIndex);
}
最后在onCreate()方法中,检查存储bundle的信息,
protected void onCreate(Bundle savedinstanceState) {
super.onCreate(savedinstanceState);
setContentView(R.layout.);
if(savedInstanceState !=null) {
mCurrentIndex = savedInstanceState.getInt(KEY_INDEX,0);
10.在Bundle中存储和恢复的数据类型只能是基本数据类型,以及可以实现Serializable和Parcelable接口的对象,比较好的方法是通过其他方法保存定制的类对象,而在Bundle中保存标识对象的基本类型对象、
11.覆盖onSaveInstanceState(Bundle)方法来保存当前activity的小的或是暂存的数据,而覆盖onStop()方法来保存永久性的数据,如用户编辑的文字
}
}