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界面:
相关推荐
有助于深入了解Android Activity生命周期的测试代码,可以结合博客http://blog.csdn.net/freetangxiaoying/article/details/17167819领悟。
实验一 第一个Android程序和Activity生命周期。实验要求: 1.用工程向导生成第一个Android程序,并在模拟器上运行 注意在新建应用的选择SDK版本时选API 18 2.熟悉Android应用程序的基本文件结构 3.了解使用开发环境...
android_ctivity生命周期,应用程序组件的简介以及生命周期,会对Andriod的开发最基本的有些深刻的认识
对于应用开发者来说,理解不同的应用组件(特别是Activity、Service、Intent Receiver)对应用进程的生命周期的影响,这是非常重要的。如果没有正确地使用这些组件,将会导致当应用正在处理重要的工作时,进程却被...
devDiv 移动开发丛书之android 第二章 activity 生命周期
Android Activity生命周期测试程序,可以用作Android开发辅助小工具。
这是一个有关于Android开发平台的论文译文
[Android开发从零开始].8.Activity生命周期
Activity生命周期一般分为四个基本状态,分别是活动状态(running),暂停状态(paused),停止状态(stopped)和死亡状态。 1.活动状态(running) 活动状态一般是指该Activity正处于屏幕最显著的位置上显示,即该Activity...
详尽解释 android 里的Activity的生命周期问题,攻克开发android程序中的难题
Android中的Activity生命周期.pdf
1. 掌握activity组件生命周期函数的用法 2. 掌握使用intent实现activity之间的跳转 3. 掌握在manifest文中定义多个activity,并指定Launcher Activity 4. 掌握Activity的启动模式,和启动模式所对应的Activity和...
Android开发教程_016_Activity生命周期_标清
NULL 博文链接:https://zzqrj.iteye.com/blog/1124449
android bind life activity fragment 生命周期 绑定
1、设计界面,包括四个按钮,两个文本框。单击对应按钮可以启动对应...假定Activity A为启动Activity。 2、修改 Activity 的启动模式 LaunchMode,并通过 Log 信息来体会不同启动模式所对应的Activity 和 task 的关系
实验一Android环境构建与Activity生命周期 一、 实验内容: 1、页面要求:主页面三个按钮。 2、功能要求:点击按钮分别调用:内部的Activity、自定义的Activity、结束当前 的Activity。 二、实验要求: 1. 利用几个...
Activity 的生命周期。 一、理解Activity Activity是Android程序的4大组件之一。 Activity是Android程序的表示层。程序的每一个显示屏幕就是一个Activity。 学过WEB开发的同学,可以把Activity理解成网页中的一个...
开发环境 Win10/AndroidStudio3.1.1 MVC+体验Activity生命周期