Android生命周期练习

看了网上关于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定义了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值