1、Activity的创建过程
1、1 创建一个Activity
- 创建一个Class继承自Activity
- 重写onCreate()方法,设置布局
- 在AndroiManifest.xml文件中注册该Activity
1、2 Activity7个重要方法
- onCreate – 首次创建时调用
- onStart – 启动时
- onResume – 获得焦点时
- onPause – 转入其它Activity或者休眠等
- onStop – 当前activity不可见时
- onRestart – 重新启动时
- onDestory – 销毁时
2、单个Activity生命周期
为了证实结论正确,我们新建一个Activity命名为Fisrt,并重写上述7个方法。并在每个方法中打印出当前调用的方法。代码如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("First onCreate");
}
@Override
protected void onStart() {
System.out.println("First onStart");
super.onStart();
}
@Override
protected void onResume() {
System.out.println("First onResume");
super.onResume();
}
@Override
protected void onPause() {
System.out.println("First onPause");
super.onPause();
}
@Override
protected void onStop() {
System.out.println("First onStop");
super.onStop();
}
@Override
protected void onRestart() {
System.out.println("Fisrt onRestart!");
super.onRestart();
}
@Override
protected void onDestroy() {
System.out.println("First onDestory!");
super.onDestroy();
}
现在我们首次启动Activity发现输出为:
First onCreate
First onStart
First onResume
当我们点击Home,回到主界面时,输出为:
First onPause
First onStop
在点击程序,回到程序,输出为
First onRestart
First onStart
First onResume
在点击back,输出为
First onPause
First onStop
Fisrt onDestory
上述输出可以明显看出启动过程,就不多叙述了。
3、多个Activity生命周期
这里创建两个Activity,分别为First和Second,2个以上的,其实都是一样的。
我们在第一个activity中添加了个button,当点击button时,使用Intent跳转到Second,
跳转代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("First onCreate");
Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent();
intent.setClass(MainActivity.this,SecondActivity.class);
startActivity(intent);
}
});
}
怎么添加Button控件,就不阐述了。
下面我们启动应用程序,即进入到了first activity中。根据2所说,输出顺序应该为:
first onCreate
first onStart
first onResume
然后我们点击Button跳转到second activity中,输出为:
first onPause
second onCreate
second onStart
second onResume
first onStop
这时候活动的为second activity,所以此时进行home操作,和上面的一样。
如果我们这时点击了back退回到,则输出为
second onPause
first onRestart
first onStart
first onResume
second onStop
second onDestory
这时second activity已经destroy掉了,如果再进入就不是和上面的一样了,而是重新创建一个新的Activity了,再次跳转到second activity,则输出为:
first onPause
second onCreate
second onStart
second onResume
first onStop
4、总结
上面的程序输出已经把调用顺序,解释的很清楚了。建议大家,自己重载那7个函数,然后自己启动,实验一下增加下理解。
时间: 2024-10-21 20:02:02