乐趣区

关于app:移动APP卡顿问题解决实践

一、我的项目背景

本 APP 为面向用户的一款基于 NFC 的平安领取产品。本 APP 本作品将密码学原理、计算机技术、NFC 通信技术和数字货币思维有机联合,在全面保障安全性的同时最大限度的进步了消费者的领取体验。绝对于传统计划,本作品具备以下特点:1)实现货币的数字化;2)商家与用户双向身份认证;3)交易过程平安保障;4)欠缺的挪动领取体系;5)离线领取,脱离网络;6)账户失落可找回;7)过错协商,保障交易单方利益;8)标签型商城,便捷最大化;9)老本低廉,便于推广。
用户是须要应用本产品进行生产的客户,须要装置用户钱包客户端。次要性能结构图如下所示:

商家是商品或者服务的提供方,须要装置商家客户端。次要性能结构图如下所示:

二、所遇到的挑战

本 APP 用户反馈 APP 应用过程中存在卡顿等问题。对于手机 APP 而言,晦涩度的重要性是显而易见。为了晋升晦涩度,Google 对 Android 零碎进行了大量的优化,包含应用了 GPU 硬件加速,引入了 VSync,把 Dalvik 换成了 Art 等。那么对于咱们的 APP,呈现卡顿问题,势必会影响用户体验感,所以必须对 APP 卡顿的问题进行剖析,并且予以解决。

三、解决问题的步骤

首先,咱们进行了几轮的代码 review,尝试从逻辑层面优化代码构造,从而缩小卡顿问题的产生。这方面的优化,次要是找出在主线程中耗时较大的函数,通过优化逻辑去缩小 API 的耗时,剖析 CPU 的工作,尽量让 CPU 执行主线程中的工作。这方面的工作有很多,比方优化逻辑去缩小 API 的耗时,缓存数据以不便更快地对数据进行加载,把耗时的操作移出主线程,在子线程中进行操作。

其次,优化数据库表构造,将一些罕用的数据放到缓存中,在异步更新到数据库中。能够把所有的数据库操作都对立放到一个线程队列当中。

最初,须要欠缺监控体系。因为尽管产品上线之前,必然会通过紧密的测试工作,但还因为模式的固定以及测试死角的存在,比方,对于较大规模的 APP 产品,测试人员是根本无奈做到笼罩到全副的手机机型和 ROM,所以很多问题必然还是要依赖于真正上线之后用户的反馈。在这种状况下,欠缺的品质监控计划就显得十分必要,所以须要建设一套牢固的监控体系。这样,对线上产品的 APP 品质问题能力第一工夫召回,并做到疾速修复。那对于如何欠缺监控体系,目前来看,是有两个抉择的,一种是基于开源的 Skywalking、Cat、Zipkin、Pinpoint 等 APM 零碎,以 Skywalking 为例来讲,其是一款基于分布式跟踪的应用程序性能监控零碎。SkyWalking 的外围是数据分析和度量后果的存储平台,通过 HTTP 或 gRPC 形式向 SkyWalking Collecter 提交剖析和度量数据,SkyWalking Collecter 对数据进行剖析和聚合,存储到 Elasticsearch、H2、MySQL、TiDB 等其一即可,最初咱们能够通过 SkyWalking UI 的可视化界面对最终的后果进行查看。Skywalking 反对从多个起源和多种格局收集数据:多种语言的 Skywalking Agent、Zipkin v1/v2、Istio 勘测、Envoy 度量等数据格式。整体架构看似模块有点多,但在实际上还是比拟清晰的,次要就是通过收集各种格局的数据进行存储,而后展现。所以搭建 Skywalking 服务咱们须要关注的是 SkyWalking Collecter、SkyWalking UI 和 存储设备,SkyWalking Collecter、SkyWalking UI 官网下载安装包内已蕴含,最终咱们只需思考存储设备即可。然而应用这种零碎,就会面临工程师不相熟,工期缓和等问题。第二种抉择就是应用成熟的 APM 零碎,这种,显而易见,会有较大的短期资金压力,然而鉴于咱们我的项目的紧迫性,咱们抉择应用友盟 + 利用性能监控平台 U -APM。友盟 + 的 U -APM 利用性能监控平台基于弱小的捕捉采集能力,疾速定位谬误本源,提供用户维度的解体统计,疾速还原解体现场,并设立多种正告通道,助力开发者 7 *24 监控利用状况。十分实用于咱们的 APP。

四、我的项目总结

交易平安是以后互联网 + 领取存储利用设计的重中之重。咱们的 APP 为 了实现交易流程的平安与快捷,在应用 NFC 性能短距平安传输的同时,设计了以下交易流程加强安全性。本 APP 具备数字化、挪动化、高效化的劣势特点。但在 APP 运行期间呈现了卡顿的问题,影响了用户体验感,于是咱们通过批改代码逻辑及数据库表构造,同时欠缺监控体系的办法解决优化了这个问题。

作者:陈静茹

退出移动版