首先注意一点:通过Eclipse创建Android工程时,layout下的布局XML的文件名只能用小写的英文名和数字构成。
和Servlet一样,Activity也有生命周期,里面有如下七个方法,主要研究一下方法调用的先后顺序。
public class Activity extends ApplicationContext {
}
首先注意的是,在复写这些方法时,首先调用super.onStart(),必须先调用父类的方法,否则就会报错。
Android程序和Java程序有点不一样,我们习惯于在控制台看出错信息,但是Android开发却看不到,如果想看程序出错时信息,需要切换到DDMS视图,可以看到LogCat视图下会有出错信息,方便我们调试程序。
首先准备两个Activity,直接上代码:
FirstActivity:
package com.zhd.lc; import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class FirstActivity extends Activity { @Overrid
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.firstactivity);
Button btnFirst = (Button) findViewById(R.id.btnFirst);
btnFirst.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setClass(FirstActivity.this, SecondActivity.class);
FirstActivity.this.startActivity(intent);
}
});
}
@Override
protected void onStart() {
super.onStart();
System.out.println("FirstActivity---->onStart");
}
@Override
protected void onRestart() {
super.onRestart();
System.out.println("FirstActivity---->onRestart");
}
@Override
protected void onResume() {
super.onResume();
System.out.println("FirstActivity---->onResume");
}
@Override
protected void onPause() {
super.onPause();
System.out.println("FirstActivity---->onPause");
}
@Override
protected void onStop() {
super.onStop();
System.out.println("FirstActivity---->onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
System.out.println("FirstActivity---->onDestroy");
} }
ScondActivity:
package com.zhd.lc;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SecondActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secondactivity);
Button btnSecond = (Button) findViewById(R.id.btnSecond);
btnSecond.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setClass(SecondActivity.this, FirstActivity.class);
SecondActivity.this.startActivity(intent);
}
});
}
@Override
protected void onStart() {
super.onStart();
System.out.println("SecondActivity---->onStart");
}
@Override
protected void onRestart() {
super.onRestart();
System.out.println("SecondActivity---->onRestart");
}
@Override
protected void onResume() {
super.onResume();
System.out.println("SecondActivity---->onResume");
}
@Override
protected void onPause() {
super.onPause();
System.out.println("SecondActivity---->onPause");
}
@Override
protected void onStop() {
super.onStop();
System.out.println("SecondActivity---->onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
System.out.println("SecondActivity---->onDestroy");
}
非常简单,分别在两个Activity中复写了七个生命周期的方法,我们看一下运行结果:
03-07 05:59:36.442: INFO/System.out(272): FirstActivity---->onStart
03-07 05:59:36.475: INFO/System.out(272): FirstActivity---->onResume
03-07 05:59:49.402: INFO/System.out(272): FirstActivity---->onPause
03-07 05:59:49.742: INFO/System.out(272): SecondActivity---->onStart
03-07 05:59:49.773: INFO/System.out(272): SecondActivity---->onResume
03-07 05:59:50.232: INFO/System.out(272): FirstActivity---->onStop
03-07 05:59:51.503: INFO/System.out(272): SecondActivity---->onPause
03-07 05:59:51.602: INFO/System.out(272): FirstActivity---->onStart
03-07 05:59:51.612: INFO/System.out(272): FirstActivity---->onResume
03-07 05:59:51.953: INFO/System.out(272): SecondActivity---->onStop
错误调试的查看方法,比如如果我在复写方法时没有调用super这一句的话,请看错误信息
可以在Log视图处看到N多信息,点击上面的E,只显示error类型的错误信息,就可以看到我们的错误信息了。
如果在清除后看不到Log信息,选中左边的模拟器,就可以再次看到日志信息了。