看了网上关于android生命周期的文章,了解到一个activity的调用过程是onCreate()---onStart()---onResume()---onPause()---new activity onCreate()。。。。
详见:http://www.cnblogs.com/feisky/archive/2010/01/01/1637427.html
根据自己的理解写了一个程序验证:
MainActivity.java:
public class MainActivity extends Activity {
private TextView mainText;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
mainText=(TextView)findViewById(R.id.mainText);
mainText.setText("This is the onCreate function");
}
public void onStart() {
mainText.setText("This is the onStart function");
}
public void onResume() {
mainText.setText("onResume");
}
}
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="60px"
android:id="@+id/mainText"/>
</LinearLayout>
运行一下,程序崩溃。后经高人指点,要在onStart()和onResume()函数内调用super.onStart()和super.onResume(),因为这两个方法是继承自父类的(super表示继承父类),我的写法相当于完全重写了这两个方法,抛弃了父类中的一些基本操作;
另外,即使继承了父类,上面的TextView也不会显示“onCreate”和"onStart"字样,因为程序启动过程中,顺序调用完这三个程序,最后显示的是onResume()所示页面,要想验证调用过程,可用system.out.println()打印,并在logcat中查看。修改后的代码为:
package com.example.tabtest;
import android.os.Bundle;
import android.app.Activity;
import android.app.TabActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.widget.TabHost;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView mainText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("onCreate");
setContentView(R.layout.activity_main);
mainText=(TextView)findViewById(R.id.mainText);
mainText.setText("This is the onCreate function");
}
public void onStart() {
super.onStart();
mainText.setText("This is the onStart function");
System.out.println("onStart");
}
public void onResume() {
super.onResume();
System.out.println("onResume");
mainText.setText("onResume");
}
}
疑问:为什么有的示例程序只写了onCreate函数并在里面调用页面显示,没有写onStart()和onResume()函数,却也能够显示呢?是否Activity类的onStart()和onResume()函数继续显示onCreate中的显示内容呢?需要看一下Activity定义了