`
winfred1206
  • 浏览: 13339 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Android开发,Activity生命周期

 
阅读更多


 Android程序中Acticity的生命周期测试

   

                                          (第一个跳转到第二个Activity时,分为满屏、浮窗两种形式)

 

一、当从FirstActivity(满屏)跳转到SecondActivity(非满屏,浮窗形式)时: 

执行结果是:(根据关键程度来划分步骤

 

   1) FirstActivity的 onCreate()、onStart()、onResume方法执行;

 

   2)当按下按钮时,即由第一个界面FirstActivity切换到SecondActivity时,FirstActivity的onPause()方法执行,接着secondActivity的onCreate()、onStart()、onResume()方法执行;

  3)当按下AVD(Android Virtual Device,即安卓虚拟机)上的“返回”键时,执行

      了SecondActivity的onPause()方法;

  4)再执行FirstActivity的onResume方法;

  5)再执行SecodActivity的onStop()、onDestroy()方法;

 

   6)当再次按下FirstAcivity中能够跳转到SecondActivity()的按钮时;

   7)FirstActivity的onPause方法被执行;

   8)SecondActivity的onCreate()、onStart()、onResume()方法被执行--------说明一个新的SecondActivity被创建,与之前的不同,也验证了步骤……6)中执行了SecondActivity()的onDestroy()方法。(对比步骤5),有FirstActivity的onResume()方法,说明不必再创建一个,而是之前的那个FirstActivity的继续执行)

 

 Activity生命周期流程图



 

 

注:区分浮窗、非浮窗(满屏)的两种情况,看流程图中的“The Activity is no longer visible”(此Activity是否可见)处于onPause()和onStop()方法之间。当为浮窗形式时,SecondActivity的界面为浮窗,但是FirstActivity的界面依然可见(相当于背景);不过,当为非浮窗形式时,SecondActivity的界面为全屏显示,显然会把FirstActivity的界面掩盖,也就是FirstActivity的界面“no longer visible

    经过试验,以上流程图得到了验证~~

 

二、当从FirstActivity(满屏)跳转到SecondActivity(满屏,非浮窗形式)

 

             1)FirstActivity的 onCreate()、onStart()、onResume方法执行

             2)按下按钮登录到第二个界面,即SecondActivity时,FirstActivity的onPause()方法执行,

             3)接着secondActivity的onCreate()、onStart()、onResume()方法执行

      4)接着是FirstActivity的onStop方法执行

             5)当按下AVD(Android Virtual Device,即安卓虚拟机)上的“返回”键时,执行

      了SecondActivity的onPause()方法

             6)再接着执行,FirstActivity的onRestart()、onStart()、onResume()方法

             7)再执行SecondActivity的onStop()、onDestroy()方法

              8)当第二次按下按钮,从第一个Activity的界面到第二个Activity的界面时,FirstActivity的onPause()方法执行了

              9)紧接着,SecondActivity的onCreate()、onStart()、onResume()方法执行了--------》说明一个新的SecondActivity被创建,与之前的不同,也验证了步骤……6)中执行了SecondActivity()的onDestroy()方法。(对比步骤6),有FirstActivity的onResume()方法,说明不必再创建一个,而是之前的那个FirstActivity的继续执行)

 

 

 附录源代码:

第一种情况时(即所跳转到的第二个界面,SecondActivity的显示为浮窗形式时)

注意此种情况的SecondActivity浮窗形成只要在AndroidManifest.xml里的相应的Activity里面加入android:theme="@android:style/Theme.Dialog",如果没有这一句代码,则SecondActivity会显示为全屏

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test_activitylife"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.test_activitylife.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="com.example.test_activitylife.SecondMainActivity"
            android:label="@string/title_activity_second_main"
            android:theme="@android:style/Theme.Dialog"
            
             >
        </activity>
    </application>

</manifest>

 

 

1)FirstActivity的界面程序

 

package com.example.test_activitylife;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


//测试Activity的生命周期
public class MainActivity extends Activity {
	private Button bt;

	private static final String Tag="First_Activity";
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		Log.v(Tag," 的onCreate()方法执行");
		setContentView(R.layout.activity_main);
		
		bt=(Button)this.findViewById(R.id.button1);

		bt.setOnClickListener(new OnClickListener(){
		@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent intentLeap=new Intent();
				intentLeap.setClass(MainActivity.this, SecondMainActivity.class);
				startActivity(intentLeap);
		}	
		});
		
		
	}

	@Override
		protected void onStart(){
			super.onStart();
			Log.v(Tag," 的Onstart()方法执行");
			
		}
		
	@Override
		protected void onResume(){
			super.onResume();
			Log.v(Tag," 的onResume()方法执行");
		}
	@Override	
		protected void onPause(){
			super.onPause();
			Log.v(Tag," 的onPause()方法执行");
		}
	@Override
		protected void onRestart(){
			super.onRestart();
			Log.v(Tag,"F 的onRestart()方法执行");		
		}
	@Override	
		protected void onStop(){
			super.onStop();
			Log.v(Tag," 的 onStop()方法执行");
		}
	@Override	
		protected void onDestroy(){
			super.onDestroy();
			Log.v(Tag," 的 onDestroy()方法执行");
		}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

 界面显示:

 



  SecondActivity的界面程序

 

package com.example.test_activitylife;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;

public class SecondMainActivity extends Activity {
	private final static String Tag="Second_Activity";
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Log.v(Tag,"Second_Activity的onCreate()方法执行");
		setContentView(R.layout.activity_second_main);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.second_main, menu);
		return true;
	}
	
	@Override
	protected void onStart(){
		super.onStart();
		Log.v(Tag," 的Onstart()方法执行");
		
	}
	
	@Override
	protected void onResume(){
		super.onResume();
		Log.v(Tag,"的onResume()方法执行");
	}
	@Override
	protected void onPause(){
		super.onPause();
		Log.v(Tag," 的onPause()方法执行");
	}
	@Override
	protected void onRestart(){
		super.onRestart();
		Log.v(Tag," 的onRestart()方法执行");		
	}
	@Override
	protected void onStop(){
		super.onStop();
		Log.v(Tag," 的 onStop()方法执行");
	}
	@Override
	protected void onDestroy(){
		super.onDestroy();
		Log.v(Tag," 的onDestroy()方法执行");
	}

}

 界面显示:

 

 

 

 

 

 

第二种情况时(即所跳转到的第二个界面,SecondActivity的显示为非浮窗形式时)

FirstActivity的界面程序和第一种情况一样,即可参考上面的,只是相应的AndroidManifest.xml文件里少了  android:theme="@android:style/Theme.Dialog"

     

 FirstActivity界面:



 

SecondActivity界面:



 

 

 

  • 大小: 64.6 KB
  • 大小: 229.3 KB
  • 大小: 231.5 KB
  • 大小: 315.3 KB
分享到:
评论

相关推荐

    Android activity生命周期示例

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

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

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

    Android Activity生命周期

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

    android Activity生命周期

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

    Android Activity生命周期测试代码

    有助于深入了解Android Activity生命周期的测试代码,可以结合博客http://blog.csdn.net/freetangxiaoying/article/details/17167819领悟。

    android activity 生命周期详细介绍

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

    Activity生命周期与启动模式

    **Activity生命周期** Activity的生命周期包括了从创建到销毁的各个阶段,主要有以下7个关键状态: 1. **创建(Created)**:当Activity首次被创建时,会调用`onCreate()`方法。在这里,通常进行初始化工作,如...

    android 组件Activity生命周期

    在Android开发中,理解Activity的生命周期对于管理应用的状态和资源至关重要。Activity是构成Android应用程序的主要构建块之一,它负责提供用户界面并处理与用户交互相关的事件。Activity的生命周期由一系列回调方法...

    android_Activity生命周期

    Activity生命周期是Android开发中至关重要的一环,因为它决定了应用如何响应用户操作和系统事件。理解Activity的生命周期对于编写高效、稳定且用户体验良好的应用至关重要。 Activity的生命周期由多个关键状态组成...

    Android开发 - Activity生命周期

    这篇博客文章“Android开发 - Activity生命周期”(链接:https://zzqrj.iteye.com/blog/1124449)可能详细讲解了Activity在不同状态之间的转换及其对程序行为的影响。 Activity生命周期主要涉及以下几个关键状态:...

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

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

    Android说明Activity生命周期的代码例子

    在ExmActLife这个文件中,很可能包含了不同生命周期方法的示例代码,以及模拟不同启动模式的实验,通过这些实践,开发者可以更好地理解和掌握Activity生命周期的控制,从而优化应用性能和用户体验。实践中,我们应...

    测试Android Activity生命周期Demo

    本示例“测试Android Activity生命周期Demo”旨在通过实际代码帮助开发者理解并掌握Activity的生命周期,这对于创建稳定、高效的Android应用至关重要。 Activity的生命周期包括了多个关键状态,如初始化、启动、...

    Android_Activity_生命周期例子

    这是Activity生命周期的第一个回调,通常在这里进行布局加载、初始化变量和设置基本UI等操作。 2. **可见态(Started)**: `onStart()`方法标志着Activity变得对用户可见,但还没有占据屏幕的焦点。此时,Activity...

    Android课程第一次实验报告_Andorid应用程序Activity生命周期.docx

    Android 应用程序的生命周期是开发过程中至关重要的概念,它涉及到进程和组件的管理,以及系统如何根据资源需求和用户交互来决定何时启动、暂停、恢复或终止它们。本实验报告将深入探讨Android应用程序,尤其是...

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

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

    Android-activity生命周期

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

    android的Activity的生命周期

    这些状态之间的转换是Activity生命周期的核心内容。 1. **创建(Created)**: 当Activity首次被创建时,会调用`onCreate()`方法。在这个阶段,开发者应初始化Activity的基本元素,如设置布局、数据绑定等。 2. **...

    android activity的生命周期小例子

    在这个“android activity的生命周期小例子”中,我们将探讨Activity在不同场景下如何启动、暂停、恢复和终止,以及如何在后台打印Activity的调用方法。 Activity的生命周期主要由以下几个关键方法组成: 1. `...

Global site tag (gtag.js) - Google Analytics