创建一个简单的应用程序,用于考察android的activity的生命周期,需要覆盖多个Activity类的方法。这些方法是android根据事件将Activity置于某个生命周期状态时调用。
Activity代码:
package com.easymorse.activity;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class ActivityTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i("ActivityTest", "call onCreate");
}
@Override
protected void onStart() {
super.onStart();
Log.i("ActivityTest", "call onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.i("ActivityTest", "call onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.i("ActivityTest", "call onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.i("ActivityTest", "call onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("ActivityTest", "call onDestroy");
}
}
代码中使用了android提供的日志通用工具类,Log。使用它的静态方法可以很容易的打印出日志,其中第一个字符串参数表示日志的标签,用于过滤日志,第二个参数是日志正文的字符串。日志API的JAVADOC见:
http://developer.android.com/intl/zh-CN/reference/android/util/Log.html
查看日志的办法是,在android SDK的tools目录下执行:
adb logcat
这样会在命令行中打印出设备或者模拟器的全部日志。比较乱,如果只需要查看上面代码的日志,可执行:
adb.exe logcat -s ActivityTest:I
这里的-s参数用于接收特定标签的日志信息,后面跟的:I则表示只接收Information级别以上的信息。
在windows下如果查看中文日志信息,会出现乱码,原因估计是android下是utf-8,而windwos下是GBK:
针对上面代码观察到的日志情况是,当关闭屏幕时,会调用onPause,点击menu按钮后,会调用onResume,这和上面的流程图中的不符,图中的箭头是单向的,有误。