当前位置: 首页 > 科技观察

我们分析了100个移动应用程序,发现了应用程序崩溃的6个常见原因!

时间:2023-03-15 23:18:38 科技观察

人们讨厌应用程序崩溃,尤其是当程序变慢或冻结几秒钟时。根据DimensionalResearch的一项调查,61%的用户期望程序在4秒内启动,而49%的用户期望在2秒内响应输入。如果应用程序崩溃、死机或报告错误,53%的用户会卸载该应用程序。无论您的目标受众是消费者还是企业,崩溃都会让他们完全沮丧。和一些移动开发者交谈,询问他们遇到的最常见的崩溃问题是什么,他们给出了六个常见的原因:1.内存管理我问的每个人都谈到内存管理,大多数APP都会打开很多线程来占用系统的内存。OpsClarity营销副总裁SachinAgarwal表示,程序员编写代码时,就好像他们是应用程序中编写的唯一应用程序一样,同时,他建议在编写程序时,考虑使其成为“社区中的好公民”。应用生态系统。”.内存问题对所有开发人员来说都不一样。“在iOS中,您可以利用Objective-C来处理大量内存问题,”SolsticeMobile业务开发副总裁AndrewWhiting说。但是需要做出权衡。“在Android上,你需要对[内存]进行更深入的控制,你可以让它做你想做的事,但它增加了复杂性。”“在Java中遇到[运行]内存不足,我们发现通常它与加载大图像或操作位图等事情有关,”NewRelic高级软件工程经理JonathanKaron说。问题的常见原因已汇总在MobileSDK技术性能报告中。“实际上,在Android上存在数量惊人的链接器问题,其中无法找到类,或者存在称为未分类链接的异常。”另一方面,iOS应用程序经常受到NSInternalInconsistency异常的影响,这是因为当开发人员在一个地方更改数组或数据集合时,其他东西正在读取那里的事物列表。2.软件生命周期的迭代应用开发过程及其频繁的发布为最小可行产品推向市场打开了大门,然后随着时间的推移对其进行改进,现在非常流行。然而,由于对操作系统和第三方API的依赖,传统的软件生命周期变得更加复杂。“如果你查看最新的Android更新,就会发现有很多应用程序崩溃,”Agarwal说。“操作系统本身不稳定或操作系统更新,应用程序未更新”或用户未下载新版本,这些“不在你的控制范围内,它说明了一个核心开发过程。”移动和云计算的增长增加了第三方服务及其相关API的使用,这可以节省时间并有助于更快地将应用程序推向市场,但也有其自身的一系列问题。“许多图书馆都有共同的问题,”怀廷说。“他们试图解决每个人的问题,而不是为每个人提供最好的解决方案。”例如,给定的API可能对特定应用程序有性能限制。API还可以使用棘手的技术,例如iOS方法调整。当原始代码(如苹果的API)不可用时,开发者在原始代码(如苹果的API)的基础上进行修改。“你可以称它为iOS应用程序开发的‘黑暗艺术’之一,”在线旅行社Fareportal的移动总监RamanBhatia说。“[但是]如果您的应用程序代码是以某种方式编写的,它可能会导致崩溃。”API也可能导致其他问题。“API延迟、错误率、数据带宽、API版本和API请求数量都会变成大问题,”Agarwal说。然后是API本身,它需要专门的工具来跟踪所有内容。API还可能导致其他问题,例如内存错误。“如果你在创建其他对象之前创建了一个已经从内存中移除的对象,你会认为这通常是没有问题的,但需要注意的是你不知道后续创建的对象是否需要引用被删除的对象”Co-创始人兼开发者龙乐说“特别是当你引入第三方框架时,就会出现问题。你永远无法确定他们在清理什么,他们在创造什么。”3.测试不充分测试的需求非常明显,但是要获得足够的覆盖率,尤其是在有大量Android版本和设备的情况下,可能具有挑战性。虽然有模拟器,但在服务器上运行的软件的性能限制可能与在真实机器上不同。例如,如果应用程序的一个线程读取数据库,而第二个线程试图修改这个数据库,“这是一个时间问题,”Couchbase的移动安全架构师WayneCarter说。“如果他们没有同时发生碰撞,那么问题就不会出现,并且可以用日志描述来掩盖。”模拟器通常不会与真实机器相同。在不同的设备上运行不同的系统是一个可行的方案,但是这种方法比模拟器要贵。这需要在预算和要求之间进行权衡。测试应结合行业标准和用户期望的基准测试,以确保开发人员和用户可以接受内容。测试也应该持续进行。监控性能并寻找用户反馈,然后尽快解决问题。4.网络管理随着应用对网络的依赖程度越来越高,无论是对于数据还是第三方服务,网络管理都成为了一个麻烦源。最常见的崩溃原因是当您准备获取数据、提交内容并等待恢复时,应用程序响应或挂起。运营副总裁PravinVazirani说,也许开发人员可以让Wi-Fi连接完美无缺,但当用户处于网络状况不佳的区域时,他们就会遇到问题。下面提供了执行其他可能感兴趣的操作的机会。如果人们了解超出应用程序控制的临时情况的原因,他们更有可能保持冷静并且不会对软件感到恼火。5.错误情况和异常处理由于移动开发的复杂性,有些错误是不可避免的,无论是意外的API更改,避免之前检测到的内存问题,还是网络连接情况,甚至只是传输大文件(如图像或视频))在这种情况下减慢数据传输速率,最好的办法是给予良好的错误和异常处理。例如,用户输入了错误的数据,或者在应该提供值时在文本框中提供了文本,这样应用程序就不会因为意外尝试而报错。在任何这些情况下,正确编码的应用程序都会注意到意外情况,并且在将错误通知用户的同时,可以优雅地终止进程或活动。如果您可以保持沟通渠道畅通,您将更有可能留住用户。6.代码太多最好的建议是保持应用程序简单。找到一个用于特定目的的插件,使用它并编写必要的代码。“最好和最没有错误的代码是您自己编写的代码,”企业移动开发公司LextechGlobalServices的高级系统工程师FelipeLaso-Marsetti说。您真的可以创建一个没有错误的应用程序,尤其是在第一轮吗?可能不会。但是,您可以关注这些故障源,并尽最大努力创建健壮的异常处理机制。