Activity是android四大组件之一,它的作用是:An Activity is an application component that provides a screen with which users can interact in order to do something,翻译成中文就是:Activity提供一个与用户交互的窗口。
Activity的生命周期有六个函数:
onCreate():这个是创建界面,数据初始化的
onStart:到这一步变成用户可见不可交互的
onResume:变成和用户可交互的,(在activity 栈系统通过栈的方式管理这些个Activity的最上面,运行完弹出栈,则回到上一个 Activity)
onPause:到 这一步是可见但不可交互的,系统会停止动画等消耗CPU 的事情从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在 onResume里读出来,注意:这个方法里做的事情时间要短,因为下一个activity不会等到这个方法完成才启动
onstop:变得不可见,被下一个activity覆盖了
onDestroy: 这是activity被干掉前最后一个被调用方法了,可能是外面类调用finish方法或者是系统为了节省空间将它暂时性的干掉,可以用 isFinishing()来判断它,如果你有一个Progress Dialog在线程中转动,请在onDestroy里把他cancel掉,不然等线程结束的时候,调用Dialog的cancel方法会抛异常的。
然后我用一段代码验证下:
package test.TestActivity;
import android.app.Activity;
import android.os.Bundle;
public class TestActivityActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
System.out.println("this is onCreate");
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
System.out.println("this is onStart");
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
System.out.println("this is onResume");
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
System.out.println("this is onPause");
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
System.out.println("this is onStop");
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
System.out.println("this is onRestart");
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
System.out.println("this is onDestory");
}
}
输出结果:OnCreate()->OnStart()->OnResume();
我按下back键后的结果:OnPause()->OnStop()->OnDestroy();然后我有进入程序,结果:OnCreate()->OnStart()->OnResume();,说明我按下back键后,程序被销毁了
我按下home键后的结果:OnPause()->OnStop();然后我又进入程序,结果:OnRestart()->OnStart()->OnResume();说明按下home键后,程序相当于在休眠。