android activity 测试
测试结果 正常情况下
1 | 一个activity从创建到显示调用顺序 | onCreate->onStart->onResume //onResume开始时也会被调用,写在onResume中应只有恢复显示和创建共有的代码 |
2 | 按返回键退出activity | onPause->onStop->onDestroy |
3 | 从应用管理中“强行停止” | onPause->onStop //无Destroy |
4 | 按返回退出后长按home键调出应用 或 点击应用重新进入 | onCreate->onStrat->onResume |
5 | 按主页键退出 然后长按home键调出应用 或 点击应用重新进 | onStrat->onResume //按主页键挂后台 无需onCreate |
6 | finish()操作 | onPause->onStop->onDestroy |
7 | menu,submenu,dialog显示并返回 | 无操作 //无onPause |
8 | 切换到另一个activity | 1.onPause->2.onCreate->2.onStart->2.onResume->1.onStop //居然是切换着来的 |
9 | 8步骤后 按返回键 | 2.onPause->1.onStart->1.onResume->2.onStop->2.onDestroy //疑问:什么时候单独用onResume? |
10 | 9步骤后 切换到同一个activity | 1.onPause->2.onCreate->2.onStart->2.onResume->1.onStop |
11 | 10步骤后 按主页键返回 | 2.onPause->2.onStop |
12 | 11步骤后 重新点击应用进入 | 2.onStart->2.onResume |
13 | 应用中来电 | onPause->onStop //同activity切换 |
14 | 13步骤 后挂断返回应用 | onStart->onResume //同activity切换 |
15 | 当activity2 设置 android:theme="@android:style/Theme.Dialog" 切换到activity2显示 | 1.onPause->2.onCreate->2.onStart->2.onResume->2.onStop->2.onDestroy |
16 | 15步骤后 按返回键返回 | 2.onPause->1.onResume //应该注意一下 Destroy后才调用的pause. |
测试结论
1 | activity从创建到显示 | onCreate->onStart->onResume |
2 | activity finish或者是按返回键 使其不显示 | onPause->onStop->onDestroy //重新进入需要onCreate->onStart->onResume |
3 | activity 按主页键不显示 | onPause->onStop //重新进入只需要onStart->onResume |
4 | activity间切换 | 1.onPause->2.onCreate->2.onStart->2.onResume->1.onStop |
5 | 4步骤后按返回键返回前一个activity | 2.onPause->1.onStart->1.onResume->2.onStop->onDestroy //下次再intent进入 得onCreate |
6 | menu dialog | 无任何操作 //有些说的不可交互时调用onPause 奇怪 应该是我理解错了? |
7 | 打开一个 android:theme="@android:style/Theme.Dialog" 的activity | 1.onPause->2.onCreate->2.onStart->2.onResume->2.onStop->2.onDestroy ;注意:直接调用onStop onDestroy |
8 | 7步骤后按返回键回到前一个activity | 2.onPause->1.onResume//直接调用onPause 真乱 估计还有其他特殊情况 |
测试用代码
activity1.java
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.SubMenu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class activity1 extends Activity {
/** Called when the activity is first created. */
String a="activity_1";
AlertDialog.Builder builder;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.v(a,"onCreate");
Button Btn_Destory=(Button)findViewById(R.id.Btn_Destory);
Btn_Destory.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
finish();
}
});
builder =new Builder(this);
builder.setTitle("title");
builder.setMessage("message");
builder.setPositiveButton("text", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int id) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
Button Btn_Dialog=(Button)findViewById(R.id.Btn_Dialog);
Btn_Dialog.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
builder.show();
}
});
Button Btn_Intent=(Button)findViewById(R.id.Btn_Intent);
Btn_Intent.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
startActivity2();
}
});
}
public void onStart(){
Log.v(a,"onStart");
super.onStart();
}
public void onResume(){
Log.v(a,"onResume");
super.onResume();
}
public void onPause(){
Log.v(a,"onPause");
super.onPause();
}
public void onStop(){
Log.v(a,"onStop");
super.onStop();
}
public void onDestroy(){
Log.v(a,"onDestory");
super.onDestroy();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, 1, 1, "menu_1");
menu.add(0, 2, 2, "menu_2");
SubMenu subMenu = menu.addSubMenu(1, 100, 100, "submenu");
subMenu.add(2, 101, 101, "submenu_1");
subMenu.add(2, 102, 102, "submenu_2");
return true;
}
public void startActivity2(){
Intent intent=new Intent(activity1.this,activity_2.class);
this.startActivity(intent);
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<Button
android:id="@+id/Btn_Destory"
android:text="finish"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/Btn_Dialog"
android:text="Dialog"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/Btn_Intent"
android:text="Intent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
activity2.java
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class activity_2 extends Activity{
String a="activity_2";
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Log.v(a,"onCreate");
setContentView(R.layout.main2);
}
public void onStart(){
Log.v(a,"onStart");
super.onStart();
}
public void onResume(){
Log.v(a,"onResume");
super.onResume();
}
public void onPause(){
Log.v(a,"onPause");
super.onPause();
}
public void onStop(){
Log.v(a,"onStop");
super.onStop();
}
public void onDestroy(){
Log.v(a,"onDestory");
super.onDestroy();
}
}
main2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
</LinearLayout>
分享到:
相关推荐
本篇文章将深入探讨Android的Activity周期,并通过实际测试来帮助开发者更好地掌握这个核心概念。 一、Activity生命周期概述 Activity的生命周期由系统管理,主要分为启动(Creation)、运行(Running)、暂停...
上一篇文章已经介绍了单元测试的作用和简单示例,如果不了解的读者可以先阅读上一篇[ Android单元测试-作用以及简单示例](http://blog.csdn.net/double2hao/article/details/77159380)。 这篇文章主要介绍常见的...
有助于深入了解Android Activity生命周期的测试代码,可以结合博客http://blog.csdn.net/freetangxiaoying/article/details/17167819领悟。
本示例“测试Android Activity生命周期Demo”旨在通过实际代码帮助开发者理解并掌握Activity的生命周期,这对于创建稳定、高效的Android应用至关重要。 Activity的生命周期包括了多个关键状态,如初始化、启动、...
在Android应用开发中,Activity是用户界面的基本单元,它的启动模式是决定Activity如何启动和运行的关键因素。Android提供了四种不同的启动模式:标准模式(Standard)、单实例模式(SingleTop)、单任务模式...
学习Android有一段时间了,虽然前段时间对软件测试有了一些了解,不过接触android的单元测试却是头一次。这几天在物流大赛上也用了不少时间,所以对于android的单元测试没有太深入的研究,所以先写个基本入门吧!...
在Android开发中,动态设置Activity背景图片是一项常见的需求,它能为用户带来更丰富的交互体验。本文将深入探讨如何通过源码实现这一功能,并提供一个实际的案例——wallTest。 首先,我们需要理解Android中的...
在提供的"ActivityCycle"文件中,很可能是包含了一个模拟Activity生命周期各个状态的测试程序,用于帮助开发者理解和调试Activity的生命周期行为。通过运行和分析这个程序,你可以直观地看到Activity在不同状态下的...
本文将深入探讨Android Activity的LaunchMode,并通过实际测试案例来阐述其工作原理。 1. **Activity的生命周期** 在讨论LaunchMode之前,我们需要了解Activity的基本生命周期。一个Activity可以经历创建(onCreate...
这种技术通常用于测试、调试或安全研究,例如检测应用的启动性能、分析Activity的启动流程,甚至可能用于恶意软件中来干扰或控制其他应用的行为。但请注意,未经许可的Hook操作可能违反Android的开发者政策,可能...
在Android开发中,Activity是应用程序的基本构建块,用于表示用户可见的屏幕。Activity之间的切换动画不仅可以提升用户体验,还可以为应用程序增添个性化特色。Android系统提供了一系列的API,允许开发者自定义这些...
在Android系统中,Activity是应用程序的基本组件,它负责与用户交互并展示UI。"android Activity自启动"这个主题涉及到如何让一个Activity在设备开机时自动启动,这在一些需要后台服务或者持续监控的App中非常常见,...
`Instrumentation`在Android框架中主要用于提供测试框架的支持,同时也参与到Activity的创建流程中。当一个新的Activity被创建时,`Instrumentation`会被用来调用Activity的生命周期回调方法,例如`onCreate()`、`...
开发者还可以使用模拟器或连接到各种物理设备进行实际测试,确保Activity在各种场景下的表现。 总之,Android Activity的切屏处理是移动开发中的一个重要话题,它涉及到资源适配、配置变化监听以及状态保存与恢复等...
5. **测试不同启动标志(FLAG)**:Intent可以携带不同的启动标志,如FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_SINGLE_TOP等,这些标志会影响Activity的启动行为,需要结合LaunchMode一起考虑。 6. **实践与代码分析...
在你提供的文件"testactivityservice"中,虽然没有具体的代码,但可以推测这可能是一个关于测试Activity和服务的示例项目。在实际开发中,这样的项目可能包含各种Activity的实现和它们之间的交互,以及可能涉及到...
在Android应用开发中,Activity是用户界面的基本单元,它负责展示屏幕上的内容并处理用户交互。Task和Activity的关系是Android系统组织应用运行流程的核心概念。本文将深入探讨Android Activity的4种TaskMode,以及...
- 测试动画在不同设备和Android版本上的表现,确保兼容性。 总之,Android的Activity跳转动画为开发者提供了丰富的工具和手段来提升用户体验。通过深入理解动画机制并熟练运用,可以创造出既美观又实用的应用交互。
在Android应用开发中,Activity和Fragment是两个核心组件,它们承载了用户界面的主要逻辑和交互。理解并熟练掌握它们的生命周期对于开发出高效、稳定的应用至关重要。本篇将深入探讨Activity和Fragment的生命周期,...