APP闪退的原因

前言

 

在日常生活中,我们会经常使用各种应用程序,偶尔也会遇到软件崩溃的情况,这已经成为了司空见惯的事情。然而,对于一个产品开发者来说,这样的用户体验显然是很糟糕的,大概率会导致用户流失,收益减少。这就要求我们测试人员要尽最大可能去发现软件中的缺陷,以减少应用程序崩溃的可能性 今天,我们一起来探讨一下导致“APP闪退”的那些事儿~


 


闪退的定义
 

闪退,是指在移动设备(如安卓、ios)中,在打开使用应用程序时突然退出或中断的情况。

 


表现特征

 


  • 当打开某个应用程序时,画面一闪而过,随即退回到App主页或者返回到桌面界面

  • 在使用某些特定功能时,突然出现白屏、黑屏或者画面冻结,无法继续操作

  • 手机在使用某个应用程序时,出现频繁的弹窗提示错误或者异常......

 



闪退原因

 

1. 应用流量激增 

当某款应用程序突然面临大量用户访问时,服务器承受压力过大,导致无法满足访问需求,从而出现内容无法刷新或系统崩溃等情况。一般遇到这种情况,对于用户来说安心等待即可,开发人员会尽力通过各种技术手段来解决这个紧迫问题。

 

2. 内存管理 

  • 内存泄露:程序未能及时释放内存资源。

  • 内存溢出:程序所需的内存超出了设备的限制

  • 内存越界:程序访问了未授权的内存位置

 

3. App程序未充分考虑接口返回数据的兼容 

接口返回的数据类型具有多样性,比如:空字符串、整数型和空数组等。若App未进行适当处理,将无法正确解析和获取所需参数,从而导致软件崩溃。因此,在前后台之间应建立统一的参数类型标准,以避免出现此类错误。

 

4. 资源加载问题

网页中引用的资源(如CSS文件、JavaScript文件、图片等)可能加载失败或加载错误,导致网页无法正常渲染或运行,进而导致崩溃。

 

5. 程序本身Bug

  • 数组越界:使用负数索引或超过数组长度的索引进行访问。

  • 空指针异常:程序中使用了未初始化的指针或者已经释放的指针,导致访问了无效地址,从而导致程序崩溃。

  • 死锁:程序中多个线程或进程之间相互等待对方释放资源,形成死循环,最终导致程序崩溃

  • 资源泄漏:程序中未正确释放或关闭资源,比如文件、数据库连接等,导致资源耗尽,最终导致程序崩溃。

  • 堆栈溢出:堆栈区缓冲区被填满或在堆栈为空时进行数据操作。

  • 并发操作:并发时调用了一个已释放的指针

  • 逻辑错误:程序逻辑不正确导致的错误。

  • 不正确的异常处理:程序中未正确处理异常情况,导致未预期的错误发生

  • 不正确的输入验证:程序中未正确验证用户输入的数据,导致恶意输入或者非法输入导致程序崩溃。

 

6. 第三方库和插件问题

使用第三方插件或库可能会遇到兼容性问题、版本冲突或错误使用等情况,这可能导致网页崩溃的情况发生。

 

7. 缺少数据包

一些大型游戏需要数据包才能运行的,缺少数据包就可能会导致闪退哦~

 

8. 手机内存不足

在使用完一个应用程序后,很多用户会习惯性地返回到桌面。这时并没有真正退出应用程序,而是将其转为后台运行。如果后台运行的应用程序过多,并且手机的内存相对较少,就可能会出现闪退问题

 

9. 权限

一般是AndroidManifest文件中忘记配置相关权限

系统权限被拒后使用相关权限时出现闪退,如相机拍照

 

10. 交互逻辑

  • 不同App来回切换

  • app 界面交互滑动操作导致 app 极度崩溃

 

11. 兼容性

  • 系统兼容性:APP的SDK和手机的系统不兼容

  • 版本兼容性:某些API在老版本有但新版本没有,造成对象为空引起闪退

  • 分辨率兼容:由于手机型号多种,分辨率、软硬件信息各不同,不同的手机兼容上可能会出现不匹配导致崩溃

 

12. 网络异常

  • 无网下操作:

  • 网络切换:不同网络间切换(无网、WIFI、移动网络)

  • 网络中断:使用app时突然断开网络

  • 弱网:弱网环境,服务端没有及时响应,造成app闪退

 

13. 缓存垃圾过多

我们都知道每款软件都会占用一定的内存空间。比如:小红书会有视频缓存,微信有聊天记录缓存,浏览器会保存访问过的图片等等。如果长时间不清理这些缓存垃圾,软件所需的内存空间会逐渐不足,导致运行变得越来越卡顿,最终可能导致软件无法正常打开或者出现闪退的情况。

关于缓存数据大小,通常在软件设置中会有相应的模块可见。许多软件都提供了“清除缓存”按钮,但是在操作之前,我们需要考虑到某些文件或图片可能在未来仍会被使用到,因此建议谨慎地选择清除缓存的操作

 

14. 杀毒软件误判

手机端安装较多杀毒软件,可能会造成错误拦截,造成多个杀毒软件的冲突,还可能会造成软件启动时的误判,从而导致出现APP闪退的情况。

 

15. 资源竞争

软件冲突,资源竞争

 


结束语

 

总之,APP闪退的原因有很多种,需要根据具体情况进行分析和处理。在测试过程中,若遇到闪退问题,一定要截图(或录制)该问题,并保存相关的日志信息。尽力找到复现该问题的路径,并在缺陷平台记录该bug,尽可能详细的描述。比如:设备型号、系统版本,环境、时间、详细描述操作步骤和日志信息。如果问题是偶现的,可在标题中注明“偶现”

本文作者:52Herze

本文链接:https://www.cnblogs.com/52Herze/p/17726394.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   测试开发成长录  阅读(268)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑