移动APP卡顿问题解决实践

本文涉及的产品
应用实时监控服务ARMS - 应用监控,每月50GB免费额度
简介: 本APP为面向用户的一款基于NFC的安全支付产品。本APP本作品将密码学原理、计算机技术、NFC通信技术和数字货币思想有机结合,在全面保障安全性的同时最大限度的提高了消费者的支付体验。相对于传统方案,本作品具有以下特点:1)实现货币的数字化;2)商家与用户双向身份认证;3)交易过程安全保障;4)完善的移动支付体系;5)离线支付,脱离网络;6)账户丢失可找回;7)差错协商,保障交易双方利益;8)标签型商城,便捷最大化;9)成本低廉,便于推广。

一、项目背景

本APP为面向用户的一款基于NFC的安全支付产品APP本作品将密码学原理、计算机技术、NFC通信技术和数字货币思想有机结合,在全面保障安全性的同时最大限度的提高了消费者的支付体验。相对于传统方案,本作品具有以下特点:1)实现货币的数字化;2)商家与用户双向身份认证;3)交易过程安全保障;4)完善的移动支付体系;5)离线支付,脱离网络;6)账户丢失可找回;7)差错协商,保障交易双方利益;8)标签型商城,便捷最大化;9)成本低廉,便于推广。

用户是需要使用本产品进行消费的客户,需要安装用户钱包客户端。主要功能结构图如下所示:

1.jpg商家是商品或者服务的提供方,需要安装商家客户端。主要功能结构图如下所示:

2.jpg

二、所遇到的挑战

APP用户反馈APP使用过程中存在卡顿等问题。对于手机APP而言,流畅度的重要性是不言而喻。为了提升流畅度,Google对Android系统进行了大量的优化,包括使用了GPU硬件加速,引入了VSync,把Dalvik换成了Art等。那么对于我们的APP出现卡顿问题,势必会影响用户体验感,所以必须对APP卡顿的问题进行分析并且予以解决

三、解决问题的步骤

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

其次,优化数据库表结构,将一些常用的数据放到缓存中,在异步更新到数据库中。可以把所有的数据库操作都统一放到一个线程队列当中。

最后,需要完善监控体系。因为虽然产品上线之前,必然会经过严密的测试工作,但还由于模式的固定以及测试死角的存在,比如,对于较大规模的APP产品,测试人员是基本无法做到覆盖到全部的手机机型和ROM,所以很多问题必然还是要依赖于真正上线之后用户的反馈。在这种情况下,完善的质量监控方案就显得非常必要,所以需要建立一套牢固的监控体系。这样,对线上产品的APP质量问题才能第一时间召回,并做到快速修复。那对于如何完善监控体系,目前来看,是有两个选择的,一种是基于开源的SkywalkingCatZipkinPinpointAPM系统,以Skywalking为例来讲,其是一款基于分布式跟踪的应用程序性能监控系统SkyWalking的核心是数据分析和度量结果的存储平台,通过 HTTP gRPC 方式向 SkyWalking Collecter 提交分析和度量数据,SkyWalking Collecter 对数据进行分析和聚合,存储到 ElasticsearchH2MySQLTiDB 等其一即可,最后我们可以通过 SkyWalking UI 的可视化界面对最终的结果进行查看。Skywalking 支持从多个来源和多种格式收集数据:多种语言的 Skywalking Agent Zipkin v1/v2 Istio 勘测、Envoy 度量等数据格式。整体架构看似模块有点多,但在实际上还是比较清晰的,主要就是通过收集各种格式的数据进行存储,然后展示。所以搭建 Skywalking 服务我们需要关注的是SkyWalking CollecterSkyWalking UI 和 存储设备,SkyWalking CollecterSkyWalking UI 官方下载安装包内已包含,最终我们只需考虑存储设备即可。但是使用这种系统,就会面临工程师不熟悉,工期紧张等问题。第二种选择就是使用成熟的APM系统,这种,不言而喻,会有较大的短期资金压力,但是鉴于我们项目的紧迫性,我们选择使用友盟+应用性能监控平台U-APM。友盟+U-APM应用性能监控平台基于强大的捕获采集能力,快速定位错误根源,提供用户维度的崩溃统计,快速还原崩溃现场,并设立多种警告通道,助力开发者7*24监控应用情况。非常适用于我们的APP

四、项目总结

交易安全是当前互联网+支付存储应用设计的重中之重。我们的APP为 了实现交易流程的安全与快捷,在使用 NFC 功能短距安全传输的同时,设计了以下交易流程增强安全性。本APP具有数字化、移动化、高效化的优势特点。但在APP运行期间出现了卡顿的问题,影响了用户体验感,于是我们通过修改代码逻辑及数据库表结构,同时完善监控体系的方法解决优化了这个问题。




作者:陈静茹

北京大学研究生在读,7年开发经验。


相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
4月前
|
移动开发 JavaScript 小程序
从入门到实践:Uni-app跨平台开发与应用
从入门到实践:Uni-app跨平台开发与应用
317 1
|
3月前
|
XML 监控 安全
Android App性能优化之卡顿监控和卡顿优化
本文探讨了Android应用的卡顿优化,重点在于布局优化。建议包括将耗时操作移到后台、使用ViewPager2实现懒加载、减少布局嵌套并利用merge标签、使用ViewStub减少资源消耗,以及通过Layout Inspector和GPU过度绘制检测来优化。推荐使用AsyncLayoutInflater异步加载布局,但需注意线程安全和不支持特性。卡顿监控方面,提到了通过Looper、ChoreographerHelper、adb命令及第三方工具如systrace和BlockCanary。总结了Choreographer基于掉帧计算和BlockCanary基于Looper监控的原理。
57 3
|
移动开发 缓存 JavaScript
Vue3.0入门 + Vant3.0移动端实践(三)使用Cordova打包Android App
Vue3.0入门 + Vant3.0移动端实践(三)使用Cordova打包Android App
|
持续交付
|
iOS开发
《移动 App 性能监测实践(iOS篇)》电子版地址
移动 App 性能监测实践(iOS篇)
143 0
《移动 App 性能监测实践(iOS篇)》电子版地址
|
监控 前端开发 Java
Android自定义控件(十)——SurfaceView实战实现天气APP背景移动效果
Android自定义控件(十)——SurfaceView实战实现天气APP背景移动效果
427 0
|
监控
《“啄”壮成长,移动app线上日志分析利器》电子版地址
“啄”壮成长,移动app线上日志分析利器
70 0
《“啄”壮成长,移动app线上日志分析利器》电子版地址
|
移动开发 缓存 安全
如何提升App用户隐私合规性?以YonBuilder移动开发平台APICloud为例
在移动应用开发领域,如果企业的应用程序未采用动态权限方式获取用户的隐私权限,将无法上架Google Play及国内的各大应用市场。对于一款标准的移动端商业app,动态权限功能已经成为必不可少的标配功能。 本文主要介绍如何使用YonBuilder移动开发技术,实现移动端的动态权限功能。
160 0