测一测你对 Activity 的了解

发表于:2020-8-06 12:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:搜狗测试    来源:搜狗测试

  引言
  在日常的移动端测试沟通过程中,我们经常会听到开发说到一些平台开发术语,本次小编将对Android四大组件之一的Activity进行些简单的介绍和测试点总结。
  Activity介绍
  1、Activity 概览
  Activity是Android最基本的四大组件之一(Activity,Service,ContentProvider,BroadcastReceiver),其中Activity主要负责与用户进行交互。
  提到应用与用户的交互,最常见的是页面形式,对于单个页面,从实现上说会有很多元素,可归类为M(model)V(view)C(control),这些元素数据可以通过Activity进行集成管理,最终展示一个用户交互的页面。当然,页面的实现除了Activity之外还有Fragment,本次我们主要介绍Activity。
  通常,应用中的一个Activity会被指定为主Activity,然后,每个Activity可以启动另一个Activity,以执行不同的操作。另外,Activity也会经常启动属于其他应用的Activity。例如,浏览器应用的Activity可能会启动社交媒体应用的“分享”Activity。
  2、Activity生命周期
  Activity的生命周期直接影响到与用户的交互,因此生命周期很重要。当用户浏览、退出和返回到应用时,应用中的Activity会在其生命周期的不同状态间转换。
  为了在Activity生命周期的各个阶段之间导航转换,Activity 类提供六个核心回调方法:onCreate()、onStart()、onResume()、onPause()、onStop() 和 onDestroy()。
  onCreate()
  此回调方法会在系统创建Activity时触发。onCreate()完成后,下一个回调方法将是onStart()。
  onStart()
  onCreate() 退出后,Activity将进入“已启动”状态,并对用户可见。此回调方法包含 Activity进入前台与用户进行互动之前的最后准备工作。
  onResume()
  系统会在Activity开始与用户互动之前调用此回调方法。此时,该Activity位于Activity堆栈的顶部,并会捕获所有用户输入。应用的大部分核心功能都是在onResume()方法中实现的。此类输入事件可包括接到来电、用户导航到另一个Activity,或设备屏幕关闭。onResume()回调方法后面总是跟着onPause() 。
  onPause()
  系统将此方法视为用户将要离开您的Activity的第一个标志(这并不总是意味着Activity会被销毁);此方法表示Activity不再位于前台(在用户处于多窗口模式时Activity仍然可见)。例如,当用户点击“返回”或“最近使用的应用”按钮时,就会出现此状态。
  onPause()执行完毕后,下一个回调方法为onStop()或onResume(),具体取决于 Activity进入“已暂停”状态后发生的情况。
  onStop()
  当Activity对用户不再可见时,系统会调用onStop()。出现这种情况的原因可能是Activity被销毁,新的Activity启动,或者现有的Activity正在进入“已恢复”状态并覆盖了已停止的Activity。在所有这些情况下,停止的Activity都将完全不再可见。
  系统调用的下一个回调方法将是onRestart()(如果Activity重新与用户互动)或者onDestroy()(如果Activity彻底终止)。
  onRestart()
  当处于“已停止”状态的Activity即将重启时,系统就会调用此回调。onRestart() 会从 Activity停止时的状态恢复Activity。此回调方法后面总是跟着onStart()。
  onDestroy()
  系统会在销毁Activity之前调用此回调方法。通常,实现onDestroy() 是为了确保在销毁Activity或包含该Activity的进程时释放该Activity的所有资源。
  系统调用此回调方法的原因如下:
  ① Activity即将结束(由于用户彻底关闭Activity或由于系统为Activity调用 finish());
  ② 由于配置变更(例如设备旋转或多窗口模式),系统暂时销毁Activity。
  在应用的生命周期中,应用很可能会多次进入和退出Activity。例如,用户可以点击设备的返回按钮,或者Activity可能需要启动不同的Activity。如果Activity位于前台,并且用户点按了返回按钮,Activity将依次经历onPause()、onStop() 和onDestroy() 回调。活动不仅会被销毁,还会从返回堆栈中移除。
  Activity测试总结
  1、Activity查询方式
  方法一:
  1、cmd命令中输入:adb logcat | grep ActivityManager  运行应用,可以实时查看当前正在运行的Activity;
  另外,也可以通过输入:adb logcat ActivityManager:I MyApp:D *:S,过滤标记为“ActivityManager”和“MyApp”的日志信息。
  方法二:
  1、cmd命令中输入:adb shell dumpsys activity activities;
  也可以使用adb shell dumpsys window | findstr mCurrentFocus 命令查看当前运行的包名和Activity更清晰一些。
  2、测试注意点
  Activity是应用中每次用户互动的容器,因此测试应用的Activity时,可以关注以下测试点:
  1)Activity相关的应用交互页面的数据、布局、网络请求等的展示响应的正确性;
  2)其他应用中断了应用的Activity,例如,在使用应用时接听来电,或切换至另一应用的场景;
  3)系统销毁又重新创建了您的Activity,例如,当用户离开应用并在稍后返回时,是否会丢失用户的进度;
  4)当屏幕在横向和纵向之间旋转时,是否会崩溃或丢失用户的进度;
  5)用户将您的Activity放置在新的窗口环境中,例如画中画 (PIP) 或采用多窗口模式的环境,相关交互页面的展示;
  6)当Activity多次调用时,是否会因销毁不当,引发内存泄漏的问题。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号