`
lautherf
  • 浏览: 14959 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

android activity 测试

阅读更多
android  activity 测试
测试结果 正常情况下
1一个activity从创建到显示调用顺序onCreate->onStart->onResume //onResume开始时也会被调用,写在onResume中应只有恢复显示和创建共有的代码
2按返回键退出activityonPause->onStop->onDestroy
3从应用管理中“强行停止”onPause->onStop //无Destroy
4按返回退出后长按home键调出应用 或 点击应用重新进入onCreate->onStrat->onResume
5按主页键退出 然后长按home键调出应用 或 点击应用重新进onStrat->onResume //按主页键挂后台 无需onCreate
6finish()操作onPause->onStop->onDestroy
7menu,submenu,dialog显示并返回无操作 //无onPause
8切换到另一个activity1.onPause->2.onCreate->2.onStart->2.onResume->1.onStop //居然是切换着来的
98步骤后 按返回键2.onPause->1.onStart->1.onResume->2.onStop->2.onDestroy //疑问:什么时候单独用onResume?
109步骤后 切换到同一个activity1.onPause->2.onCreate->2.onStart->2.onResume->1.onStop
1110步骤后 按主页键返回2.onPause->2.onStop
1211步骤后 重新点击应用进入2.onStart->2.onResume
13应用中来电onPause->onStop //同activity切换
1413步骤 后挂断返回应用onStart->onResume //同activity切换
15当activity2 设置 android:theme="@android:style/Theme.Dialog" 切换到activity2显示1.onPause->2.onCreate->2.onStart->2.onResume->2.onStop->2.onDestroy
1615步骤后 按返回键返回2.onPause->1.onResume //应该注意一下 Destroy后才调用的pause.

测试结论
1activity从创建到显示onCreate->onStart->onResume
2activity finish或者是按返回键 使其不显示onPause->onStop->onDestroy //重新进入需要onCreate->onStart->onResume
3activity 按主页键不显示onPause->onStop //重新进入只需要onStart->onResume
4activity间切换1.onPause->2.onCreate->2.onStart->2.onResume->1.onStop
54步骤后按返回键返回前一个activity 2.onPause->1.onStart->1.onResume->2.onStop->onDestroy //下次再intent进入 得onCreate
6menu dialog无任何操作 //有些说的不可交互时调用onPause 奇怪 应该是我理解错了?
7打开一个 android:theme="@android:style/Theme.Dialog" 的activity1.onPause->2.onCreate->2.onStart->2.onResume->2.onStop->2.onDestroy ;注意:直接调用onStop onDestroy
87步骤后按返回键回到前一个activity2.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周期测试

    本篇文章将深入探讨Android的Activity周期,并通过实际测试来帮助开发者更好地掌握这个核心概念。 一、Activity生命周期概述 Activity的生命周期由系统管理,主要分为启动(Creation)、运行(Running)、暂停...

    Android单元测试-对Activity的测试

    上一篇文章已经介绍了单元测试的作用和简单示例,如果不了解的读者可以先阅读上一篇[ Android单元测试-作用以及简单示例](http://blog.csdn.net/double2hao/article/details/77159380)。 这篇文章主要介绍常见的...

    Android Activity生命周期测试代码

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

    测试Android Activity生命周期Demo

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

    android activity4种启动模式测试

    在Android应用开发中,Activity是用户界面的基本单元,它的启动模式是决定Activity如何启动和运行的关键因素。Android提供了四种不同的启动模式:标准模式(Standard)、单实例模式(SingleTop)、单任务模式...

    Android单元测试初探——Instrumentation

    学习Android有一段时间了,虽然前段时间对软件测试有了一些了解,不过接触android的单元测试却是头一次。这几天在物流大赛上也用了不少时间,所以对于android的单元测试没有太深入的研究,所以先写个基本入门吧!...

    Android 动态设置程序activity背景图片源码

    在Android开发中,动态设置Activity背景图片是一项常见的需求,它能为用户带来更丰富的交互体验。本文将深入探讨如何通过源码实现这一功能,并提供一个实际的案例——wallTest。 首先,我们需要理解Android中的...

    Android Activity生命周期测试程序

    在提供的"ActivityCycle"文件中,很可能是包含了一个模拟Activity生命周期各个状态的测试程序,用于帮助开发者理解和调试Activity的生命周期行为。通过运行和分析这个程序,你可以直观地看到Activity在不同状态下的...

    Android Activity LaunchMode Test

    本文将深入探讨Android Activity的LaunchMode,并通过实际测试案例来阐述其工作原理。 1. **Activity的生命周期** 在讨论LaunchMode之前,我们需要了解Activity的基本生命周期。一个Activity可以经历创建(onCreate...

    Android Hook Activity 启动劫持

    这种技术通常用于测试、调试或安全研究,例如检测应用的启动性能、分析Activity的启动流程,甚至可能用于恶意软件中来干扰或控制其他应用的行为。但请注意,未经许可的Hook操作可能违反Android的开发者政策,可能...

    Android中Activity切换动画

    在Android开发中,Activity是应用程序的基本构建块,用于表示用户可见的屏幕。Activity之间的切换动画不仅可以提升用户体验,还可以为应用程序增添个性化特色。Android系统提供了一系列的API,允许开发者自定义这些...

    android Activity自启动

    在Android系统中,Activity是应用程序的基本组件,它负责与用户交互并展示UI。"android Activity自启动"这个主题涉及到如何让一个Activity在设备开机时自动启动,这在一些需要后台服务或者持续监控的App中非常常见,...

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

    `Instrumentation`在Android框架中主要用于提供测试框架的支持,同时也参与到Activity的创建流程中。当一个新的Activity被创建时,`Instrumentation`会被用来调用Activity的生命周期回调方法,例如`onCreate()`、`...

    Android Activity 切屏处理

    开发者还可以使用模拟器或连接到各种物理设备进行实际测试,确保Activity在各种场景下的表现。 总之,Android Activity的切屏处理是移动开发中的一个重要话题,它涉及到资源适配、配置变化监听以及状态保存与恢复等...

    Android Activity LaunchMode 验证

    5. **测试不同启动标志(FLAG)**:Intent可以携带不同的启动标志,如FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_SINGLE_TOP等,这些标志会影响Activity的启动行为,需要结合LaunchMode一起考虑。 6. **实践与代码分析...

    Android获取当前的Activity类名

    在你提供的文件"testactivityservice"中,虽然没有具体的代码,但可以推测这可能是一个关于测试Activity和服务的示例项目。在实际开发中,这样的项目可能包含各种Activity的实现和它们之间的交互,以及可能涉及到...

    Android Activity的4种TaskMode

    在Android应用开发中,Activity是用户界面的基本单元,它负责展示屏幕上的内容并处理用户交互。Task和Activity的关系是Android系统组织应用运行流程的核心概念。本文将深入探讨Android Activity的4种TaskMode,以及...

    Android的Activity跳转动画

    - 测试动画在不同设备和Android版本上的表现,确保兼容性。 总之,Android的Activity跳转动画为开发者提供了丰富的工具和手段来提升用户体验。通过深入理解动画机制并熟练运用,可以创造出既美观又实用的应用交互。

    Android Activity和Fragment的生命周期测试代码

    在Android应用开发中,Activity和Fragment是两个核心组件,它们承载了用户界面的主要逻辑和交互。理解并熟练掌握它们的生命周期对于开发出高效、稳定的应用至关重要。本篇将深入探讨Activity和Fragment的生命周期,...

Global site tag (gtag.js) - Google Analytics