Android测试基础知识

本文详细介绍了Android的基础知识,包括Activity的生命周期,内存回收概念及过程,以及如何处理ANR。此外,重点讲解了Monkey自动化测试,包括Monkey测试的原理、命令参数以及测试策略。最后,文章提供了Android测试中的常用adb命令,如多台设备操作、文件互传、安装卸载软件、生成Log日志和查看内存与进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 Android基础知识

Android生命周期

1、完整生命周期

Activity的基本生命周期如下所示:

  public  class MyActivity extends Activity {

  protected   void onCreate(BundlesavedInstanceState);

  protected   void onStart();

  protected   void onResume(); 

  protected   void onPause();

  protected   void onStop();

   protected   void onDestroy();

}

 

你自己写的Activity会按需要重载这些方法,onCreate是免不了的:

  • 在一个Activity正常启动的过程中,他们被调用的顺序是

onCreate -> onStart -> onResume

  • 在Activity被干掉的时候顺序是

onPause-> onStop -> onDestroy

这就是一个完整的生命周期

但如果程序正运行着呢来电话了,这个程序咋办?中止!具体分两种情况:

  • 如果中止的时候新出的一个Activity是全屏的那么:onPause->onStop,恢复的时候onRestart->onStart->onResume
  • 如果打断这个应用程序的是一个Theme为Translucent(半透明)或者Dialog的Activity那么只是:onPause,恢复的时候onResume.

2、具体方法介绍

onCreate:创建界面,做一些数据的初始化工作

onStart:可见不可交互

onResume:可交互的,(在activity栈系统通过栈的方式管理这些个

        Activity的最上面,运行完弹出栈,则回到上一个Activity)

onPause:可见不可交互,系统会停止动画等消耗CPU的事情从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回.在这里保存的数据,应该在onResume里读出来,注意:这个方法里做的事情时间要短,因为下一个activity不会等到这个方法完成才启动

onStop: 变得不可见,被下一个activity覆盖了

onRestart:当处于停止状态的活动需要再次展现给用户的时候,触发该方法

onDestroy: 这是activity被干掉前最后一个被调用方法了,可能是外面类调用finish方法或者是系统为了节省空间将它暂时性的干掉,可以用isFinishing()来判断它,如果你有一个ProgressDialog在线程中转动,请在onDestroy里把他cancel掉,不然等线程结束的时候,调用Dialog的cancel方法会抛异常的.

onPause,onStop, onDestroy,三种状态 下activity都有可能被系统干掉

3. 内存回收

1、概念

Android 之所以采用特殊的资源管理机制,原因在于其设计之初就是面向移动终端,所有可用的内存仅限于系统 RAM,必须针对这种限制设计相应的优化方案.

当 Android 应用程序退出时,并不清理其所占用的内存;Linux 内核进程也相应的继续存在,所谓“退出但不关闭”.从而使得用户调用程序时能够在第一时间得到响应.

当系统内存不足时,系统将激活内存回收

2、回收过程

一个Android 程序的进程是何时被系统结束的呢?通俗地说,一个即将被系统关闭的程序是系统在内存不足(low memory)时,根据“重要性层次”选出来的“牺牲品”.一个进程的重要性是根据其中运行的部件和部件的状态决定的.各种进程按照重要性从高到低排列如下(回收顺序相反):

  1. 前台进程——这样的进程拥有一个在屏幕上显示并和用户交互的activity或者它的一个 IntentReciver正在运行.这样的程序重要性最高,只有在系统内存非常低,万不得已时才会被结束.
  2. 可见进程——在屏幕上显示,但是不在前台的程序.比如一个前台进程以对话框的形式显示在该进程前面.这样的进程也很重要,它们只有在系统没有足够内存运行所有前台进程时,才会被结束.
  3. 服务进程——这样的进程在后台持续运行,比如后台音乐播放、后台数据上传下载等.这样的进程对用户来说一般很有用,所以只有当系统没有足够内存来维持所有的前台和可见进程时,才会被结束.
  4. 后台进程——这样的程序拥有一个用户不可见的activity.这样的程序在系统内存不足时,按照LRU(Least Recently Used)的顺序被结束.
  5. 空进程——这样的进程不包含任何活动的程序部件.系统可能随时关闭这类进程.

4. 响应能力(ANR

应用程序无响应——Application No Response

何时会ANR:

  • 点击事件或按键事件5秒钟无响应;
  • onReceive()到Broadcast消息后10秒钟没有处理返回

5. 较典型Crash场景

  • 无法解析intent导致crash——卸载自带浏览器,激活程序网络访问功能,如分享、点赞、搜索、打开链接
  • 小内存手机,扫描大体量SD卡——如包含5G以上各种垃圾,执行扫描,可能出现OOM(Out Of Memory)类型crash
  • 某些场景下的扫描数字快速跳动crash——同样是小内存手机OOM
  • 点击程序图标,启动过程中连续点击back键crash——某些方法初始化失败导致crash
  • 空指针导致crash

二、 自动化测试——Monkey

1. Monkey测试简介

Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等随机操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常

1. Monkey程序介绍

  • Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar
  • jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey

然后通过在cmd中执行: adb shell monkey +command来进行Monkey测试

也可以先adb shell进入系统,之后只需执行monkey+command,如图:

 

注意:Monkey测试是推送命令到手机执行!

即一旦开始执行命令ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值