Android Activity类讲解(一)
--by CY[kotomifi@gmail.com]
1.protected void onCreate(Bundle savedInstanceState) { throw new RuntimeException("Stub!"); }
当创建一个Activity时,系统会自动调用onCreate方法来完成创建工作.该创建工作包括布局,监听器的绑定等.
首先说一下Bundle 这个类,Bundle是一个键值对,跟Map类似,两个Activity之间的通信可以用Bundle类来实现.
Bundle savedInstanceState对象则是保存程序上一次关闭(冻结)时的状态,也可以通过重写onFreeze方法来保存冻结前的状态.当程序启动(Activity 重新初始化时),会再次调用onCreate方法,从savedInstanceState中获取前一次的冻结状态,可以通过Bundle来将这一个Activity 中的内容传到下一个Activity 中.
当一个Activity 结束前需要保存状态,就保存在savedInstanceState中,当其它Activity创建时,就能从中获得数据.
2.protected void onSaveInstanceState(Bundle outState) { throw new RuntimeException("Stub!"); }
Android中的Activity通过onSaveInstanceState()方法保存Activity的状态,在onCreate或者onRestoreInstanceState方法中哦功能恢复,如果是通过onRestart方法运行,则只会执行onSaveInstanceState方法.
图1-1是android Activity的生命周期.
图1-1
3. protected void onRestoreInstanceState(Bundle savedInstanceState) { throw new RuntimeException("Stub!"); }
解释见第2条
4.protected void onRestart() { throw new RuntimeException("Stub!"); }
解释见第2条
5. protected void onStart() { throw new RuntimeException("Stub!"); }
下面来结合来说一下onCreate, onStart, onResume, onPause, onRestart, onStop, onDestroy方法.当启动一个Activity时,系统会依次调用onCreate, onStart, onResume方法.
从activity1启动activity2时,会先调用activity1的onPause方法,然后再调用activity2的onCreate, onStart, OnResume方法,若要完全覆盖activity1,则最后再调用activity1的onStop方法.
onCreate方法:
- Activity第一次创建时,被系统调用
- 作用是设置布局文件,绑定监听器
onStart方法:
- Activity可见时,会调用该方法
onResume方法:
- 用户可以获取当前焦点时,会调用该方法
onPause方法:
- 当新的Activity遮住当前Activity时,该方法会保存当前Activity中的数据
onRestart方法:
- 一个Activity没有被销毁时(调用onDestroy方法),再次使用该Activity时会调用onRestart方法
onStop方法:
- 当当前Activity完全不可见时,系统会调用该方法
onDestroy方法:
- 销毁一个Activity