Memo列表界面的创建和逻辑操作跟日期列表界面差不多,可以参考日期列表界面。
这儿需要重点进行说明的是下面这段代码:
google android参考手册中对onSaveInstanceState方法的说明如下:
protected void onSaveInstanceState (Bundle outState)
这个方法在一个activity被kill掉之前调用,从而在未来某个时刻要重新创建该activity的时候能够恢复其状态。
例如,显示activity A之后,在activity A前面显示activity B,那么在某个时刻系统会kill掉activity A以取回它所占用的资源,activity A将会有机会通过这个方法来保存当前的状态,从而,当用户返回activity A时,就能够在onCreate(Bundle)或者onRestoreInstanceState(Bundle)方法中恢复之前保存的用户界面的状态。
不要把这个方法与activity的生命周期回调函数如onPause和onStop混淆。当一个activity被放置到后台或者按它的方式销毁时会调用onPause;当一个activity被销毁时会调用onStop。(这儿所说的销毁应该是指设置该activity为可销毁状态,而不是真的销毁)。当用户浏览了activity B之后又浏览activity A,这时对于activity B是无需调用onSaveInstanceState(Bundle)的,因为 particular instance will never be restored, 所以系统不调用onSaveInstanceState(这儿我有点搞不懂,为什么这个particular instance不会被restored)。在这个例子中,activity B的onPause或者onStop会被调用。
一个例子是,当activity B在activity A之前调用的时候,如果在activity B的生命周期中,activity A没有被销毁的话那么activity A的onSaveInstanceState不会被调用,因为activity A的界面状态仍处于可交互的状态。
该方法默认的实现是, 通过在窗口层次结构上对有一个id的view调用onSaveInstanceState方法来处理其实例状态,此外,还保存了当前获得焦点的view的id(所有保存的这些状态,都将通过默认实现的onRestoreInstanceState来恢复)。
如果你要覆盖这个方法来保存每个view不能捕捉到的额外信息,你需要先调用该方法默认的实现(super.onSaveInstanceState),然后再保存你自己的信息。
如果调用,那么这个方法将会在onStop之前出现。而没有保证该方法是在onPause之前或之后调用。
Parameters
outState | Bundle in which to place your saved state. |
---|
从上面的描述,可以看出,如果一个activity可能被销毁的话那么onSaveInstanceState方法会被调用。但是上面所举例子中的particular instance will never be restored我就搞不清楚,希望高人指点。
因此,在onCreate方法中,如下的一句代码:
获取的就是onSaveInstanceState方法中保存的信息。