这几天有点懒了,进度有点落后了,感觉自己放松了,不行,不能给自己借口,要努力学习……
首先注意一点:通过Eclipse创建Android工程时,layout下的布局XML的文件名只能用小写的英文名和数字构成。
和Servlet一样,Activity也有生命周期,里面有如下七个方法,主要研究一下方法调用的先后顺序。
public class Activity extends ApplicationContext {
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
首先注意的是,在复写这些方法时,首先调用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 { /** Called when the activity is first created. */ @Override 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 { /** Called when the activity is first created. */ @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 1运行
03-07 05:59:36.475: INFO/System.out(272): FirstActivity---->onResume 1继续
03-07 05:59:49.402: INFO/System.out(272): FirstActivity---->onPause 1暂停(点击按钮后)
03-07 05:59:49.742: INFO/System.out(272): SecondActivity---->onStart 2启动
03-07 05:59:49.773: INFO/System.out(272): SecondActivity---->onResume 2继续
03-07 05:59:50.232: INFO/System.out(272): FirstActivity---->onStop 1停止
03-07 05:59:51.503: INFO/System.out(272): SecondActivity---->onPause 2暂停(点击按钮后)
03-07 05:59:51.602: INFO/System.out(272): FirstActivity---->onStart 1开始
03-07 05:59:51.612: INFO/System.out(272): FirstActivity---->onResume 1继续
03-07 05:59:51.953: INFO/System.out(272): SecondActivity---->onStop 2停止
以上为各方法调用的时机,可以看Activity交互时各方法执行的顺序。
错误调试的查看方法,比如如果我在复写方法时没有调用super这一句的话,请看错误信息
可以在Log视图处看到N多信息,点击上面的E,只显示error类型的错误信息,就可以看到我们的错误信息了。
如果在清除后看不到Log信息,选中左边的模拟器,就可以再次看到日志信息了。