您的位置:首页 > 移动开发 > Android开发

Android Activity生命周期演示程序的例子

2015-08-25 18:05 731 查看
先看图片:



activity的生命周期

大致分为 7个函数

分别是onCreate,onStart,onResume,onPause,onRestart,onStop,onDestroy

Activity有三个关键的循环:

整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。Activity在onCreate()设置所有的“全局”状态,在onDestory()释放所有的资源。例如:某个Activity有一个在后台运行的线程,用于从网络下载数据,则该Activity可以在onCreate()中创建线程,在onDestory()中停止线程。
可见的生命周期,从onStart()开始到onStop()结束。在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等,例如:可以在onStart中注册一个IntentReceiver来监听数据变化导致UI的变动,当不再需要显示时候,可以在onStop()中注销它。onStart(),onStop()都可以被多次调用,因为Activity随时可以在可见和隐藏之间转换。
前台的生命周期,从onResume()开始到onPause()结束。在这段时间里,该Activity处于所有 Activity的最前面,和用户进行交互。Activity可以经常性地在resumed和paused状态之间切换,例如:当设备准备休眠时,当一个 Activity处理结果被分发时,当一个新的Intent被分发时。所以在这些接口方法中的代码应该属于非常轻量级的。

以下编写程序来演示这个生命周期的例子:

首先是两个Activity的程序:

-------------------------------------------------------------------------------------

package com.linutest.exa1;

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 MainActivity extends Activity {

private Button bt_btn;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

bt_btn = (Button) findViewById(R.id.bt_btns);

bt_btn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

Intent intent = new Intent();

intent.setClass(MainActivity.this, TwoActivity.class);

intent.putExtra("updateData", "你要传的参数");

startActivity(intent);

}

});

System.out.println("onCreate");

}

@Override

protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

System.out.println("onDestroy");

}

@Override

protected void onPause() {

// TODO Auto-generated method stub

super.onPause();

System.out.println("onPause");

}

@Override

protected void onRestart() {

// TODO Auto-generated method stub

super.onRestart();

System.out.println("onRestart");

}

@Override

protected void onResume() {

// TODO Auto-generated method stub

super.onResume();

System.out.println("onResume");

}

@Override

protected void onStart() {

// TODO Auto-generated method stub

super.onStart();

System.out.println("onStart");

}

@Override

protected void onStop() {

// TODO Auto-generated method stub

super.onStop();

System.out.println("onStop");

}

}

----------------------------------------------------------------------

package com.linutest.exa1;

import android.app.Activity;

import android.os.Bundle;

public class TwoActivity extends Activity {



@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

this.setTitle("我是第二个Act!");

}



}

-----------------------------------------------------------------------

然后是,android的布局配置和全局配置文件

activity_main.xml内容如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent" >

<Button

android:id="@+id/bt_btns"

android:layout_width="130dp"

android:layout_height="40dp"

android:gravity="center"

android:background="#ff0000"

android:text="点击按钮"



/>

</LinearLayout >

-----------------------------------------------------------------------

AndroidManifest.xml内容如下:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.linutest.exa1"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk

android:minSdkVersion="8"

android:targetSdkVersion="21" />

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

>

<activity

android:name=".MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>



<activity android:name=".TwoActivity" android:launchMode="standard"/>

</application>

</manifest>

------------------------------------------------------------------------------

运行环境是用***D 4.0.3的设备运行:



运行效果如图:

第一个Act启动



点击按钮,第二个Act启动



按android设备上的回退按钮



将回退到Act1的图片状态,再次点击 回退 按钮,关闭Act。

然后,可以查看后台日志,logcat的输出为:

08-25 10:00:02.119: I/System.out(1403): onPause

08-25 10:00:02.378: I/System.out(1403): onStop

08-25 10:01:42.190: I/System.out(1403): onRestart

08-25 10:01:42.190: I/System.out(1403): onStart

08-25 10:01:42.190: I/System.out(1403): onResume

08-25 10:01:45.411: I/System.out(1403): onPause

08-25 10:01:45.960: I/System.out(1403): onStop

08-25 10:01:45.960: I/System.out(1403): onDestroy

可以知道各个生命周期函数的调用次序和过程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: