`

Android开发 - Activity生命周期

 
阅读更多

back >>

1. Activity生命周期的七个方法

    * 启动一个activity,Android系统会依次调用onCreate、onStart、onResume方法,这三个方法调用完成后,该activity可以使用了;

    * 新启动的Activity是否完全遮盖第一个Activity

        - 完全遮盖

        从本activity启动另外一个activity2时,会先调用本onPause方法,再依次调用第二个activity2的onCreate、onStart、onResume方法,之后会调用第一个activity的onStop方法;

        从activity2点击返回按钮时,会先调用第二个activity2的onPause方法,之后会调用第一个activity的onReStart、 onStart、OnResume方法,之后会调用第二个activity2的onStop方法和onDestroy方法;

        - 没有完全遮盖,新启动的activity是对话框形式时

        从本activity启动另外一个activity2时,会先调用本onPause方法,再依次调用第二个activity2的onCreate、onStart、onResume方法(不再调用第一个activity的onStop方法 );

        从activity2点击返回按钮时,会先调用第二个activity2的onPause方法,之后会调用第一个activity的onResume方法;

    onCreate方法

        - Activity第一次被创建时,会调用该方法

        - 功能: 设置布局文件,绑定监听器

    o nStart方法

        - Activity可见时,会调用onStart方法

    onResume方法

        - 用户可以获取当前activity焦点的时,会调用onResume方法

    onPause方法    此时可能会被杀掉

        - 当前Activity被新的Activity遮挡时调用,onPause方法会保存当前Activity中的数据

    onRestart方法

        - 该Activity中没有被Destroy时,再调用该Activity时会调用该方法

    onStop方法      此时可能会被杀掉

        - 当前activity完全不可见时(比如被另外一个activity遮挡住),会调用onStop此方法,此时当前activity停止

    onDestroy方法    此时可能会被杀掉

        - 销毁

 

2. Task基本概念

    * Task就是盛放Activity的栈,遵循先进后出的原则,其主要作用就是把不同应用程序的组件(Activity)组织在一起

    * Task的运行过程

        - 应用程序启动运行第一个Activity之后,会将该Activity对象压入到Stack中

        - 同样,启动第二个Activity时,该Activity对象也会被压入Stack中

        - 点击back按钮时,Stack中最顶层的Activity会被弹出栈

        - 应用程序显示的永远是栈顶的元素

 

3. 对话框风格的Activity

    * 在AndroidManifest.xml文件中配置Activity如下

         <!--  对话框控件  -->
        <activity android:name="SecondActivity"
                  android:label="@string/second_app"
                  android:theme="@android:style/Theme.Dialog"
                  >
        </activity>

 

4. 代码示例(见附件)

    * FirstActivity.java

package mars.activity05;

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 {
	/** Called when the activity is first created. */
	private Button myButton;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		System.out.println("FirstActivity ---> onCreate	 ");
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		myButton = (Button) findViewById(R.id.myButton);
		myButton.setOnClickListener(new ButtonListener());
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		System.out.println("FirstAcvity --->onDestory");
		super.onDestroy();
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		System.out.println("FirstAcvity --->onPause");
		super.onPause();
	}

	@Override
	protected void onRestart() {
		// TODO Auto-generated method stub
		System.out.println("FirstAcvity --->onRestart");
		super.onRestart();
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		System.out.println("FirstAcvity --->onResume");
		super.onResume();
	}

	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		System.out.println("FirstAcvity --->onStart");
		super.onStart();
	}

	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		System.out.println("FirstAcvity --->onStop");
		super.onStop();
	}

	class ButtonListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			Intent intent = new Intent();
			intent.setClass(FirstActivity.this, SecondActivity.class);
			FirstActivity.this.startActivity(intent);
		}

	}

}
 

    * SecondActivity.java

package mars.activity05;

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

	private Button secondButton;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		System.out.println("SecondActivity--->onCreate");
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		secondButton = (Button)findViewById(R.id.secondButton);
		secondButton.setOnClickListener(new ButtonListener());
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		System.out.println("SecondActivity--->onDestory");
		super.onDestroy();
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		System.out.println("SecondActivity--->onPause");
		super.onPause();
	}

	@Override
	protected void onRestart() {
		// TODO Auto-generated method stub
		System.out.println("SecondActivity--->onRestart");
		super.onRestart();
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		System.out.println("SecondActivity--->onResume");
		super.onResume();
	}

	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		System.out.println("SecondActivity--->onStart");
		super.onStart();
	}

	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		System.out.println("SecondActivity--->onStop");
		super.onStop();
	}

	class ButtonListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			Intent intent = new Intent();
			intent.setClass(SecondActivity.this, FirstActivity.class);
			SecondActivity.this.startActivity(intent);
		}
		
	}
}

 

    * AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="mars.activity05"
      android:versionCode="1"
      android:versionName="1.0">
    <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-->    
        <activity android:name=".SecondActivity"
        		  android:label="SecondActivity"
        		  android:theme="@android:style/Theme.Dialog"/>

    </application>
    <uses-sdk android:minSdkVersion="4" />

</manifest> 
 

 

 

 

分享到:
评论

相关推荐

    Android应用开发-Activity生命周期.pptx

    例如,你可以创建一个过滤器,只显示与你的Activity生命周期方法相关的信息,便于跟踪Activity的状态变化。 总的来说,理解并熟练掌握Activity的生命周期和LogCat的使用是Android应用开发的基础,对于构建稳定、...

    2020-实验1-Activity生命周期验证(已完成)1

    Activity生命周期的理解和管理对于编写高效、响应式的Android应用至关重要。本实验旨在深入探索Activity的生命周期,并通过实践来理解各个阶段的工作流程以及它们之间的转换。 首先,我们来看一下Activity的生命...

    Android-activity生命周期

    6. **销毁(Destroyed)**: 当Activity不再需要,或者系统资源紧张时,系统会调用`onDestroy()`,这是Activity生命周期的最后一个阶段。开发者可以在此释放资源,执行清理工作。 在Activity的生命周期中,还有一些...

    Android开发-Activity的生命周期及Intent

    1. 掌握activity组件生命周期函数的用法 2. 掌握使用intent实现activity之间的跳转 3. 掌握在manifest文中定义多个activity,并指定Launcher Activity 4. 掌握Activity的启动模式,和启动模式所对应的Activity和...

    Android笔记(5)---Activity生命周期

    一、Activity生命周期概述 Activity的生命周期主要由七个主要方法组成,它们分别是onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()和onRestart()。每个方法对应Activity的不同阶段,理解这些...

    Android开发笔记(3)-Activity生命周期

    总之,掌握Activity生命周期是Android开发的基础,它涉及到应用的响应性、效率和稳定性。开发者需要根据应用的需求灵活运用生命周期方法,确保在不同场景下都能提供优质的用户体验。通过深入学习和实践,我们可以更...

    Android开发 - Activity 初步

    这篇博客"Android开发 - Activity 初步"可能详细介绍了Activity的基础知识,包括它的概念、生命周期以及如何在代码中创建和管理Activity。下面将深入探讨Activity的相关知识点。 **Activity的概念** Activity是...

    安卓开发框架工具类相关-activity生命周期线程优先级异常销毁任务栈.zip

    在安卓应用开发中,框架工具类是开发者...总之,熟悉并掌握Activity生命周期、线程优先级、异常销毁以及任务栈是Android开发的基本功。通过深入学习和实践,开发者可以编写出更加高效、稳定且用户体验优良的安卓应用。

    android activity 生命周期详细介绍

    在Android开发过程中,Activity作为四大组件之一,是构成应用程序的基本单元。它负责处理与用户交互相关的界面展示工作。为了更好地理解和掌握Activity的工作机制,本文将详细介绍Android Activity的生命周期及其...

    智能家居系统-Activity生命周期.pptx

    Activity生命周期是Android开发中的核心概念,理解并掌握这一生命周期对于创建稳定、高效的智能家居应用至关重要。Activity代表了一个用户可以看到并与其交互的独立屏幕。每个Activity都是一个独立的类,继承自...

    Android Activity生命周期

    理解 Activity 生命周期是 Android 开发的基础,掌握了 Activity 生命周期,可以更好地开发 Android 应用程序。 在实际开发中,我们可以使用 Log debugging 来追踪 Activity 的生命周期,可以在每个生命周期方法中...

    Android activity生命周期示例

    本示例项目“Android activity生命周期示例”旨在帮助开发者深入理解Activity的生命周期及其各个阶段,这对于优化用户体验和资源管理至关重要。 Activity的生命周期包括以下几个主要状态: 1. **创建(Created)**...

    android Activity生命周期

    Android Studio提供了多种工具帮助开发者调试Activity生命周期。例如: 1. **Android Profiler**:可以实时监控Activity的生命周期状态变化,同时分析内存、CPU和网络使用情况。 2. **Logcat**:通过打印日志,可以...

    Android-Android生命周期监听工具库

    在Android应用开发中,理解并妥善管理Activity和Fragment的生命周期是至关重要的。为了帮助开发者更有效地跟踪和控制这些组件的状态,出现了一类被称为"生命周期监听工具库"的辅助工具,如"Android-Android生命周期...

    实验一 第一个Android程序和Activity生命周期.zip

    实验一 第一个Android程序和Activity生命周期。实验要求: 1.用工程向导生成第一个Android程序,并在模拟器上运行 注意在新建应用的选择SDK版本时选API 18 2.熟悉Android应用程序的基本文件结构 3.了解使用开发环境...

    Android 中从activity1跳转到activity2再回到activity所经历的生命周期

    在Android开发过程中,理解Activity的生命周期对于管理界面状态、处理用户交互以及响应系统事件至关重要。本文将详细解析从一个Activity(Activity1)跳转到另一个Activity(Activity2),然后再返回到原Activity...

    android Activity生命周期详解(图文)

    总之,深入理解Activity生命周期和其背后的源码逻辑,对于编写高效、响应迅速且用户体验优秀的Android应用至关重要。开发者应熟练掌握这些知识点,以便在设计和调试应用时能得心应手。通过实践和分析ActivityDemo,...

    Android自学笔记-15-Activity的生命周期

    7. **onDestroy()**: 这是Activity生命周期的最后阶段,当系统决定销毁Activity时调用。通常是因为系统需要回收资源,或者Activity自己调用了finish()方法。 理解Activity的生命周期对于优化应用性能至关重要。例如...

    android启动以及activity生命周期分析

    ### Android启动及Activity生命周期分析 在Android开发过程中,理解应用程序如何启动及Activity的生命周期是非常重要的。这不仅有助于我们更好地管理程序的状态,还能帮助我们在遇到内存泄漏等问题时进行快速定位和...

Global site tag (gtag.js) - Google Analytics