这几天对安卓方面有了简单的了解,因为每个手机界面都离不开Activity,所以就说说Activity生命周期。
首先看一下Android api中所提供的Activity生命周期图
Activity其实是继承了ApplicationContext这个类,我们可以重写以下方法,如下代码:
public class Activity extends ApplicationContext {
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
为了便于理解,我写了一个测试类(就是重写了上面的6个方法)
package com.fei.testactivity;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class TestActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
System.out.println("oncreate。。。");
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
System.out.println("onstart。。。");
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
System.out.println("onresum。。。");
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
System.out.println("onpause。。。");
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
System.out.println("onstop。。。");
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
System.out.println("ondestroy。。。");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.test, menu);
return true;
}
}
运行效果为:
但要了解它的生命周期,还是要看logcat的
打开应用时先后执行了onCreate()->onStart()->onResume三个方法,看一下LogCat视窗如下:
当按BACK键时,我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->onDestory()三个方法,如下图所示:
当按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁。如下图所示:
OK,大功基本告成,这时候可以在回上面看一下Activity生命周期图,应该会有更深的理解把。