Android Activity生命周期演示程序的例子
2015-08-25 18:05
731 查看
先看图片:
![](http://img.blog.csdn.net/20150825174846081)
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的设备运行:
![](http://img.blog.csdn.net/20150825175828906)
运行效果如图:
第一个Act启动
![](http://img.blog.csdn.net/20150825180223726)
点击按钮,第二个Act启动
![](http://img.blog.csdn.net/20150825180254031)
按android设备上的回退按钮
![](http://img.blog.csdn.net/20150825180324370)
将回退到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
可以知道各个生命周期函数的调用次序和过程。
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
可以知道各个生命周期函数的调用次序和过程。
相关文章推荐
- Android 百度地图开发 应用到自己的项目中
- android中跨线程向控件传值的问题
- android代码设置、打开WLAN wifi热点及热点的连接
- Android GridView属性集合
- Android最佳性能实践(二)——分析内存的使用情况
- Android最佳性能实践(一)——合理管理内存
- Android高效加载大图、多图解决方案,有效避免程序OOM
- 【图文】Git学习之十步掌握通过Android Studio整合Git将本地库Push到远程库
- Android最佳性能实践
- Android中图片压缩(质量压缩和尺寸压缩)
- Android中图片压缩(质量压缩和尺寸压缩)
- android:weightSum="2"
- Android应用开发(一):Android平台搭建与开发环境配置
- android 安装 apk 遭遇 java.lang.UnsupportedOperationException: Only file:// URIs are supported
- Android应用开发(一):Android平台搭建与开发环境配置
- [转]Android强制设置横屏或竖屏
- Failed to resolve: com.android.support:support-v4:19
- AndroidMainfest.xml
- android下的图片裁剪和压缩
- Android 六种核心安全机制