android卡顿分析的原因

  android开发中卡顿问题一直是个比较棘手又重要的问题,严重影响了用户的体验感。解决卡顿的问题就要对APP进行优化了,而优化是一个任重而道远的过程,必须在意每一个环节,否则当你想要优化的时候,发现到处都是坑,已经不知道填补哪里了,所以我们必须一点一滴的做起。刚好前段时间,负责APP的性能调优工作,通过使用友盟+u-apm 应用性能监控平台 ,总结了遇到的一些卡顿问题以及分析。最终使得卡顿问题,明显优化,在低端手机上,效果尤为明显。接下来就为大家介绍下android使用不流畅、卡顿分析的原因有哪些。

  Android出现使用不流畅,卡顿及ANR,主要原因有三个

  1、CPU使用过高:

  这个要排除是我们自己的APP还是有别的优先级更高的进程在占用APP,如果是我们自己的app占用CPU过高,那就需要对代码进行研究定位,比如定位操作,长时间的进行位置搜索会持续占占有CPU,还有我们的常驻广播也是会占有CPU。

  2、系统内存使用过高:

  一个是系统本身内存就小,还有同时打开的应用过多,这些都会占用内存,但是最主要的可能还是我们的代码不够规范从而造成的内存浪费,内存泄漏引起的内存使用过高。比如我们的死循环,递归,对象和变量等没有及时的回收,非常驻广播没有解除注册,长生命周期的持有短生命周期的引用,比如activity中的内部类会持有一个activity的引用,等等这些都有可能造成内存泄漏,内存泄漏过多最终就会导致OOM。所以我们一般会对app的性能进行检测,系统自带的StrictMode,studio的profiler 还有三方LeakCanary都是可以来帮助我们进行性能优化的工具。

  StrictMode有两个检测策略:线程检测策略(ThreadPolicy)和虚拟机策略(VMPolicy)

  ThreadPolicy检测:自定义的耗时操作,磁盘读写,网络请求

  VMPolicy检测:activity泄漏,closeable对象未关闭,sqlite使用完了未释放,对象实例的个数

  3、UI阻塞:

  UI阻塞主要有两个方面:一是主线程的消息队列中消息过多,造成的UI界面的一些交互事件来不及处理,所以导致成被阻塞。

  二是代码执行耗时,可能是因为代码本身执行起来就很耗时,比如IO操作、网络请求,还有一个原因就是竞争锁,可能执行到这里,锁被其他线程给占用了,需要等待。还有一个可能是UI界面布局太过复杂。

  综上所述,Android出现使用不流畅,卡顿及ANR的原因就是以上的三点内容了,出现卡顿问题时,可使用友盟U-APM应用性能监控平台,对android卡顿分析进行完整的检测,以及优化APP的性能。通过轻量级的集成接入即可拥有实时、可靠、全面的应用崩溃、ANR、自定义异常等捕获能力,及卡顿、启动分析、内存分析、网络分析等性能监测能力,支持多场景、多通道智能告警监测,帮助开发者高效还原异常、卡顿用户的访问路径和业务现场,缩短故障排查时间。

  友盟+U-APM应用性能监控平台同时具有「云真机」 服务,提供了海量Android、iOS真机,通过资源集中管理,合理调度分配,为开发者提供发版前测试、发现线上问题后复现等场景使用,助力开发者平衡成本与需求,提升研发效率。助力开发者从研发测试质量验收到线上问题复现排查,保障应用品质,提升测试效率。在云真机测试期间自动采集崩溃信息,提供详尽的崩溃报告协助筛查,真正实现监控测试全流程深度打通。

  友盟+云真机搭载在U-APM应用性能监控平台上,U-APM提供了灵活地测试操作界面,支持ADB调试、WEB远程调试、扫码、抓包、虚拟定位等测试功能,并提供了测试报告供开发者后续查看。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 应用程序开发中,顿是一个常见的问题。下面是一些可能导致 Android 应用程序顿的常见原因: 1. 大量计算密集型操作:如果应用程序需要进行大量计算密集型操作,例如图像处理或数据分析,可能会导致应用程序变得缓慢或顿。 2. 内存泄漏:如果应用程序中存在内存泄漏,可能会导致应用程序变得缓慢或崩溃。内存泄漏通常是由于应用程序中未正确释放对象或未正确处理资源关闭而导致的。 3. UI 渲染问题:如果应用程序在渲染 UI 时遇到问题,例如在主线程中执行长时间运行的操作,可能会导致应用程序变得缓慢或顿。 4. 网络请求问题:如果应用程序需要进行网络请求,并且网络请求阻塞了主线程,则可能会导致应用程序变得缓慢或顿。 针对这些问题,可以采取以下措施来解决顿问题: 1. 使用多线程:如果应用程序需要进行大量计算密集型操作或网络请求,可以将这些操作移动到单独的线程中,以便在后台执行。 2. 避免内存泄漏:确保应用程序中的对象在不需要时及时释放,并且正确处理资源关闭。 3. 使用 RecyclerView 代替 ListView:RecyclerView 的性能比 ListView 更好,可以快速地处理大量数据。 4. 使用异步加载图片:如果应用程序需要处理大量图片,可以使用异步加载图片的方式来避免主线程阻塞。 5. 使用性能分析工具:可以使用性能分析工具来确定应用程序中的性能问题,并找到解决方法。 总之,顿问题通常是由于应用程序的性能问题导致的。使用上述措施可以帮助您解决顿问题,提高应用程序的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值