首页 > 其他分享 >APP闪退的原因

APP闪退的原因

时间:2023-09-24 18:33:42浏览次数:38  
标签:导致 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,尽可能详细的描述。比如:设备型号、系统版本,环境、时间、详细描述操作步骤和日志信息。如果问题是偶现的,可在标题中注明“偶现”

标签:导致,APP,程序,应用程序,内存,崩溃,闪退,原因
From: https://www.cnblogs.com/52Herze/p/17726394.html

相关文章

  • java.mapperUtils
    packagecom.yh.util;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importjava.io.IOException;importja......
  • Qemu源码分析(7)--Apple的学习笔记
    一,前言今天继续分析主要的api,包括了printlog和属性add及set,因为对于不同对象的操作,主要就是靠属性值设置及判断使用。二,源码分析A,关于qemu中自带的-d的log需要传入的参数主要通过-d然后传入的参数如下第2个成员,比如out_asmconstQEMULogItemqemu_log_items[]={{CPU_LOG_TB......
  • Global Mapper(地图绘制)下载_生成地形图 各个版本下载
    GlobalMapper21是一款实用的桌面GIS应用程序,包含丰富的空间数据处理工具、3D渲染和高程工具、地形修改工具和GPS数据管理工具等,可以将数据转化成光栅地图、高程地图或矢量地图,同时还具有GIS数据的编辑、转换、打印和记录等功能,支持超过250种文件格式。GlobalMapper21带来了新的......
  • GlobalMapper(地图绘制)下载 各个版本下载
    GlobalMapper23版是一款提供给所有GIS专业人士和地图爱好者们使用的多功能地图绘制工具,这款软件不仅为用户们提供了各式各样的空间数据处理工具,从而满足地理空间专业人员的不同需求。而且我们也可以利用GlobalMapper23版百度云来轻松完成地图绘制工作。GlobalMapper23版可以......
  • DApp智能合约去中心化软件
      DApp,全称DecentralizedApplication,经常使用的人都知道,它是基于去中心化的应用程序的方向,dapp是通过智能化的合约技术实现,是在上链上运行的,是去中心化的应用软件。  DApp智能合约去中心化软件功能的主要核心,就是无需提供去中心化的服务器,所有的数据都是存储在链上的,具有......
  • uniapp,微信小程序确认收货组件的使用
    直接上代码//拉起确认收货组件if(wx.openBusinessView){wx.openBusinessView({businessType:'weappOrderConfirm',extraData:{//merchant_id:'1230000109',//用户交易商户号//merchant_trade_no:"1234323JKHDFE1243252",//商户......
  • uniapp上拉加载更多
    <template><viewclass="container"><viewv-for="(item,index)invideoList":key="index"><labelstyle="display:block;width:100%;height:40px;background-color:saddlebrow......
  • dapp链游系统开发搭建
      本文就指导你搭建一个基于上链接的链游系统软件,来看看这些步骤都有哪些吧。  1.先了解链游系统的技术开发功能,软件包括以太,Truffle技术,这个技术是基于构建以太的应用程序开发,帮助用户快速的实现搭建dapp,链游系统软件。  2.建立游戏项目,相关的代码管理,软件的控制,使......
  • Web服务停止并卸载后其启动的线程还在跑的可能原因
    packageorg.example;importjavax.servlet.ServletConfig;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjava.time.LocalDateTime;importjava.util.concurrent.ScheduledExecut......
  • MySQL 出现 String Index out of range: x 的原因
    前言调试代码时遇到一个很奇怪的问题,对于一个很简单的sql,执行时会时不时的报异常StringIndexoutofrange:xSQL:select*fromtestwherearea=10但直接把SQL丢SQL工具里跑又没什么问题,百度了一圈都没找到有人有相同问题,明白后特地做下记录.原因由于要......