Activity的生命周期包含7个方法,
分别是:onCreate()——创建,onStart()——启动,onResume()——开始,onPause()——暂停,onRestart()——重新启动,onDestory()——销毁,onStop()——停止。
onCreate:创建Activity调用,用于Activity的初始化。
onStart():Activity在屏幕上对用户可见时调用。
onResume():Activity获得焦点时调用。
onPause():Activity被暂停时调用,即当有当前activity进入另一个Activity时(准备创建另一个Activity时)。
onRestart():从另一个activity回到当前Activity时。
onStop():Activity被停止或者Activity变成不可见时。
onDestory():调用了finish()或者android回收内存时。
这里结合一个例子说明。
创建2个Activity,分别为FirstActivity,SecondActivity。
代码如下:
FirstActivity.java:
package com.and.test; 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 FirstActivity extends Activity { private Button btn = null; @Override protected void onCreate(Bundle savedInstanceState) { System.out.println("FirstActivity-------onCreate()"); super.onCreate(savedInstanceState); this.setContentView(R.layout.first); btn = (Button) super.findViewById(R.id.btn); btn.setText(R.string.gotosecond); btn.setOnClickListener(new ButtonClickLister()); } class ButtonClickLister implements OnClickListener { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(FirstActivity.this, SecondActivity.class); FirstActivity.this.startActivity(intent); } } @Override protected void onDestroy() { // TODO Auto-generated method stub System.out.println("FirstActivity-------onDestory()"); super.onDestroy(); } @Override protected void onPause() { // TODO Auto-generated method stub System.out.println("FirstActivity-------onPause()"); super.onPause(); } @Override protected void onRestart() { // TODO Auto-generated method stub System.out.println("FirstActivity-------onRestart()"); super.onRestart(); } @Override protected void onResume() { // TODO Auto-generated method stub System.out.println("FirstActivity-------onResume()"); super.onResume(); } @Override protected void onStart() { // TODO Auto-generated method stub System.out.println("FirstActivity-------onStart()"); super.onStart(); } @Override protected void onStop() { // TODO Auto-generated method stub System.out.println("FirstActivity-------onStop()"); super.onStop(); } }
SecondActivity.java:
package com.and.test; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; /** * 每一个Activity都需要在AndroidManafest.xml中声明 * @author babylove * */ public class SecondActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // 指定布局 this.setContentView(R.layout.second); // 获取布局文件中的TextView组件 TextView textview = (TextView) this.findViewById(R.id.myTextView); // 设置textview的值。R.string.second_activity_textview:res/values/strings.xml文件中定义的name为second_activity_textview的String textview.setText(R.string.second_activity_textview); // 获取传递过来的Intent Intent intent = getIntent(); // 获取传递的数据 String test = intent.getStringExtra("test"); textview.setText(test); textview.setText("信息已发送!"); System.out.println("SecondActivity-------onCreate()"); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); System.out.println("SecondActivity-------onDestroy()"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); System.out.println("SecondActivity-------onPause()"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); System.out.println("SecondActivity-------onRestart()"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); System.out.println("SecondActivity-------onResume()"); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); System.out.println("SecondActivity-------onStart()"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); System.out.println("SecondActivity-------onStop()"); } }
这2个Activity都重写了Activity生命周期设计的7个方法。
在FirstActivity中,有一个按钮,单击该按钮可以进入SecondActivity。
FirstActivity的布局文件first.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/btn" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
String.xml:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, HelloandroidActivity!</string> <string name="app_name">Hello Android</string> <string name="second_activity_textview">The Second Activity</string> <string name="gotosecond">跳转到第二个activity</string> </resources>
在AndroidManifest.xml中注册这2个Activity。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.and.test" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="9" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".FirstActivity" 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=".SecondActivity"></activity> </application> </manifest>
接下来,为了看到调用Activity的7个生命周期方法时的输出,在LogCat中增加一个过滤器。
OK,运行我们的Android程序。
首先显示的是FirstActivity,在LogCat中看到如下输出:
03-3011:46:08.996:INFO/System.out(861):FirstActivity-------onCreate()
03-3011:46:09.096:INFO/System.out(861):FirstActivity-------onStart()
03-3011:46:09.096:INFO/System.out(861):FirstActivity-------onResume()
首次运行分别调用了onCreate(),onStart()和onResume(),这3个方法调用完毕后我们就可以看到FirstActivity这个Activity了。
单击“跳转到第二个activity”跳转到SecondActivity。
LogCat中依次输出:
03-3011:59:09.096:INFO/System.out(861):FirstActivity-------onPause()
03-3011:59:09.175:INFO/System.out(861):SecondActivity-------onCreate()
03-3011:59:09.175:INFO/System.out(861):SecondActivity-------onStart()
03-3011:59:09.196:INFO/System.out(861):SecondActivity-------onResume()
03-3011:59:09.757:INFO/System.out(861):FirstActivity-------onStop()
可以看到,首先是FirstActivity暂停,然后依次是SecondActivity的onCreate(),onStart(),onResume()。对于SecondActivity来说是首次创建,因此也是调用了这3个方法。然后SecondActivity被呈现,然后FirstActivity停止。
单击Back按钮,回到FirstActivity。
LogCat中输出如下:
03-3012:07:03.015:INFO/System.out(861):SecondActivity-------onPause()
03-3012:07:03.055:INFO/System.out(861):FirstActivity-------onRestart()
03-3012:07:03.055:INFO/System.out(861):FirstActivity-------onStart()
03-3012:07:03.055:INFO/System.out(861):FirstActivity-------onResume()
03-3012:07:03.617:INFO/System.out(861):SecondActivity-------onStop()
03-3012:07:03.617:INFO/System.out(861):SecondActivity-------onDestroy()
现在是在FirstActivity,继续单击返回按钮,回到应用程序列表。
Logcat输出如下:
03-3012:35:57.797:INFO/System.out(861):FirstActivity-------onPause()
03-3012:35:59.146:INFO/System.out(861):FirstActivity-------onStop()
03-3012:35:59.146:INFO/System.out(861):FirstActivity-------onDestory()
其实用一个例子就可以很好的理解Activity的生命周期了,附上AndroidAPI提供的Activity生命周期状态图:
结合上面的例子跟这个图,理解起来就应该就差不多了。
相关推荐
**Activity生命周期** Activity的生命周期包括了从创建到销毁的各个阶段,主要有以下7个关键状态: 1. **创建(Created)**:当Activity首次被创建时,会调用`onCreate()`方法。在这里,通常进行初始化工作,如...
Activity生命周期的理解和管理对于编写高效、响应式的Android应用至关重要。本实验旨在深入探索Activity的生命周期,并通过实践来理解各个阶段的工作流程以及它们之间的转换。 首先,我们来看一下Activity的生命...
这是Activity生命周期的第一个回调,通常在这里进行初始化工作,如设置布局、数据绑定等。 2. **启动(Started)**:`onStart()`方法标志着Activity可见但可能不完全在前台。用户可以看到Activity,但不能与其交互...
在Android应用开发中,Activity是用户界面的基本单元,它负责展示...在提供的`Activity_04`文件中,可能包含了演示这些生命周期方法变化的代码示例,通过学习和分析这些示例,开发者可以加深对Activity生命周期的理解。
当Activity不再需要时,系统会调用`onDestroy()`,这是Activity生命周期的最后阶段。通常在用户关闭Activity、系统回收资源或应用程序退出时发生。在这个方法里,可以进行清理工作,如关闭数据库连接、取消定时任务...
"测试Activity生命周期"的DEMO旨在帮助开发者直观地了解和调试Activity在不同场景下的状态变化。在这个DEMO中,我们可以通过观察日志输出或使用Android Studio的调试工具来跟踪Activity的状态。 Activity的生命周期...
### Activity 生命周期总结 在 Android 开发中,理解 Activity 的生命周期是非常重要的,因为它直接影响到应用程序的行为、性能以及用户体验。本文将详细介绍 Activity 生命周期中的各个方法及其触发条件,并通过...
本示例项目“Android activity生命周期示例”旨在帮助开发者深入理解Activity的生命周期及其各个阶段,这对于优化用户体验和资源管理至关重要。 Activity的生命周期包括以下几个主要状态: 1. **创建(Created)**...
这是Activity生命周期中的活跃状态。 - `onPause()`:当Activity即将被另一个Activity覆盖,但仍然部分可见时,系统调用`onPause()`。在此方法中,你应该保存临时数据,但不应执行耗时操作,因为它会影响新Activity...
谷歌官方提供的Activity生命周期示例("Activity lifecycle demo")是一个实用的教学工具,帮助开发者直观地理解Activity在不同情况下的状态变化。 这个demo最初是基于Eclipse开发的,但已经转化为更适合现代开发...
7. onDestroy():Activity即将被销毁时调用,这是Activity生命周期的最后阶段。在此阶段,可以做彻底的清理工作,例如关闭数据库连接、取消定时任务等。 二、Activity与Fragment的生命周期 Fragment是Android 3.0...
### 一、Android Activity生命周期介绍 #### 1. onCreate() 当Activity首次创建时被调用,这是初始化Activity的最佳时机。在该方法中通常会执行一些初始化操作,比如设置布局文件、初始化UI组件等。 示例: ``` @...
总之,深入理解Activity生命周期和其背后的源码逻辑,对于编写高效、响应迅速且用户体验优秀的Android应用至关重要。开发者应熟练掌握这些知识点,以便在设计和调试应用时能得心应手。通过实践和分析ActivityDemo,...
很好的一张Activity生命周期图,可以很清楚了解Activity生命周期的流程图
在这个"Activity生命周期Demo"中,我们将深入探讨Activity如何启动、运行、暂停、停止以及销毁的过程,以及在这些状态转换中如何适当地处理程序逻辑。 1. **Activity生命周期的基本阶段** - **创建(Created)**: ...
这是Activity生命周期的第一个回调,通常在这里进行初始化工作,如设置布局、绑定数据等。 2. **可见(Visible)**:Activity从不可见变为可见,但可能还在启动过程中,此时调用`onStart()`。在这个阶段,Activity...
本示例“测试Android Activity生命周期Demo”旨在通过实际代码帮助开发者理解并掌握Activity的生命周期,这对于创建稳定、高效的Android应用至关重要。 Activity的生命周期包括了多个关键状态,如初始化、启动、...
标题“设备旋转与Activity生命周期”所指的知识点主要是Android中Activity如何响应设备的屏幕方向变化。Activity是Android应用程序的基本组件,它负责与用户进行交互。在设备旋转时,系统会触发Activity的生命周期...
日志追踪(完成以下六步、明白android的四种状态的生命周期和相互切换): 1、启动app、查看控制台输出,发现依次触发onCreate、onStart、onResume这三个方法 2、点击按钮(弹窗风格的Activity),控制台输出onPause...
在“Android学习3——Activity生命周期”这个主题中,我们将深入探讨Activity如何启动、运行、暂停、停止以及销毁,并了解每个状态之间的转换。 Activity生命周期主要包括以下几个关键状态: 1. **初始状态...