如果把手机内存和CPU想象成固定面积的田地,单个应用对内存和CPU的占用则可比喻为个人的一亩三分地儿。当应用内存和CPU占用过高时,便过多占用了整个田地资源,挤压了邻家应用的面积,那么手机能够同时运行的应用的数量就会相应减少。

应用过度消耗手机的内存和CPU将会导致手机卡顿、延迟、甚至崩溃等现象频发,严重影响用户体验。

本次华为DevEco云测平台提供了一套专业的测试方法及解决方案,对具有代表性的几款视频类应用在不同使用场景下消耗手机内存和CPU的情况进行检测。

1、测试环境

测试平台:DevEco云测平台

(https://deveco.huawei.com/)

测试对象:腾讯视频6.2.2.17134、爱奇艺9.7.0、优酷7.3.8、搜狐视频6.9.9、乐视视频8.0、芒果TV5.8.6 华为应用市场可下载版本。

测试环境

硬件环境:华为P20 6G+64G

软件版本:基于Android 版本8.1 EMUI

测试步骤

  1. 登陆DevEco-> 测试服务->性能测试。

2.创建任务界面:测试介绍->机型选择,选择P20->测试配置,上传应用并配置账户登陆信息->提交。

2、测试方法

1.内存测试

建议达到标准

应用前台内存占用 <= 500MB;
应用后台内存占用(亮/灭屏)<= 400MB。

测试方法

通过反射调用android.app.ActivityManagerNative里面的getProcessMemoryInfo方法,获取应用的PSS(应用使用内存)使用情况:appMemoryInfos[0]。

如下图,以com.tencent.qqlive为例:

2.CPU测试

建议达到标准:

应用后台CPU占用(亮/灭屏)<=2%

测试方法:

第一步:记录初始时CPU使用情况

测试开始时,通过读取/proc/进程pid/stat,获得进程的CPU统计信息:

当前后台运行应用占用CPU时间:AppT0=cpuInfos[13]+ cpuInfos[14]。

通过读取/proc/stat,获取整个系统的CPU占用率,结果如下:

TotalT0= cpuInfos[1] + cpuInfos[2] + cpuInfos[3] + cpuInfos[4] + cpuInfos[6]+ cpuInfos[5] + cpuInfos[7]

第二步:记录结束时CPU使用情况

测试结束时,通过读取/proc/进程pid/stat,获得进程的CPU统计信息:

当前后台运行应用占用CPU时间:AppT1=cpuInfos[13]+ cpuInfos[14]

通过读取/proc/stat,获取整个系统的CPU占用率,结果如下:

TotalT1= cpuInfos[1] + cpuInfos[2] + cpuInfos[3] + cpuInfos[4] + cpuInfos[6]+ cpuInfos[5] + cpuInfos[7]

计算公式:

cpuRate = (AppT1-AppT0)/(TotalT1- TotalT0)

*异常情况:排除AppT1-AppT0小于0,CPU使用率为0的情况。

如下图,以com.tencent.qqlive为例:

3、测试结果对比

1.视频类应用内存占用对比 (前台)

通过对比各应用最新版本在同一设备中的前台内存占用数据,可以清晰的呈现出各应用内存占用情况。

由图一可见,六款视频应用均表现良好,符合测试标准(<500MB)。其中,乐视视频和搜狐视频表现最优,内存占用远低于标准线。

2.视频类应用内存占用对比 (后台)

图二是视频类应用最新版本在手机后台亮/灭屏情况下内存占用情况。

六款视频类应用后台内存占用均低于标准线(<400MB),性能表现良好,其中搜狐视频后台内存占用最低。

3.视频类应用CPU占用对比 (后台)

图三是视频类应用最新版本亮/灭屏CPU占用情况,搜狐新闻、腾新视频、优酷视频、爱奇艺的CPU占用率较低,性能良好。

乐视视频和芒果TV两个应用的CPU占用过高,超过绿色达标线一倍多,需引起开发者重视。

总结:

通过以上的数据对比,六款主流视频应用的内存占用均位于绿色标准线以内,表现良好;而在CPU后台占用中,乐视视频、芒果TV CPU占用则远高于绿色标准线,占用过高将对用户体验造成不良影响。

内存和CPU的占用所导致的手机延迟、卡顿甚至是崩溃等现象,对视频类应用的用户体验影响是非常直接的,因此也与用户的留存和活跃度息息相关。希望开发者们予以重视,将应用内存和CPU的占用保持在绿色达标线以内,华为终端开放实验室也将与开发者一起为打造绿色健康的安卓生态不懈努力。

4、高内存和CPU占用原因分析

应用内存和CPU占用过高会严重影响用户体验,那么造成这种现象的根本原因是什么?

1.高内存占用原因:

1)内存泄漏是引发应用内存问题的主要原因,长时间内存泄漏会占用大量内存。常见的内存泄漏如:Context泄漏(Activity传递泄漏、context未使用applicationContext),Handle泄漏(在handler中持有context等做耗时操作),Cursor泄漏(使用完cursor后未关闭),register后未unregister等。

2)复杂的界面布局,过多的view层级,也会占用大量的内存。

3)使用传统的Java API中提供的HashMap工具类会相对比较低效,也会占用过多的内存。

2.高CPU占用原因:

1)网络请求过多,导致持续占用CPU。

2)存在特殊的布局或者特殊操作(GPS等需要一直刷新的服务),特殊加载(图片、视频、音频等)。

3)有过多的图表、曲线图等绘制操作。

4)大量的图片、视频处理、加载货布局操作。

5、优化建议

针对通过DevEco云测平台测试发现内存、CPU占用超标、过高的现象,建议开发者从以下几方面对内存和CPU占用进行优化:

1.内存占用优化建议:

尽可能设置视图为不透明;
不要阻塞主进程;
避免重复处理数据;
选择正确的数据格式;
数据结构优化;
对象复用;
避免内存泄漏。

2.CPU占用优化建议:

大量图片、音频、视频处理最好使用JNI技术来实现;
传输完数据就将线程关闭,立即释放资源,不要让线程在一直空转等待下次数据的传输。

如何实现流畅观影体验?视频类应用内存和CPU大调查 1相关推荐

  1. 如何实现流畅观影体验?视频类应用内存和CPU大调查

    如果把手机内存和CPU想象成固定面积的田地,单个应用对内存和CPU的占用则可比喻为个人的一亩三分地儿.当应用内存和CPU占用过高时,便过多占用了整个田地资源,挤压了邻家应用的面积,那么手机能够同时运行 ...

  2. 爱奇艺携手HMS Core,为用户打造更流畅的沉浸式观影体验

    本文分享于HMS Core开发者论坛<[开发者说]爱奇艺携手HMS Core,为用户打造更流畅.更沉浸的观影体验>采访稿整理. 爱奇艺是国内领先的视频播放平台,通过接入HMS Core H ...

  3. 打造量声定制的观影体验!三星Neo QLED获得VDE空间声音优化认证

    近日,三星电子宣布,其Neo QLED成为业内首款获得VDE"空间声音优化"认证的电视产品. 一般而言,观影环境的变化会导致电视的声音表现不一致.同一台电视,在诸如客厅.卧室或露台 ...

  4. Netflix将利用人工智能技术改善手机用户观影体验

    BI中文站 3月3日报道 你用智能手机观看Netflix视频时的体验将得到明显改善. 美国视频流媒体服务和视频出租公司Netflix将利用人工智能技术改善视频编码方式,根据不同移动设备的屏幕尺寸来优化 ...

  5. 4K观影体验需要网络端到端带宽50M-100M,时延RTT<=20ms,丢包率PLR<=3.4*10

    4K观影体验需要: 1)网络端到端带宽50M-100M, 2)时延RTT<=20ms, 3)丢包率PLR<=3.4*10-5 转载于:https://blog.51cto.com/tere ...

  6. 瑞丹斯VR电影节:解读VR,带来全新的观影体验

    原文标题:瑞丹斯VR电影节:解读VR,带来全新的观影体验 2017年3月,瑞丹斯(中国)VR电影节将在中国北京盛大开幕.随着电影节一天天临近,关于VR电影的话题也在不断升温,尤其是VR电影和3D电影的 ...

  7. 荣耀智慧屏观影体验:视听俱佳震撼享受

    早就想换一台智能电视了,但是买哪个牌子却让人难以抉择,全家总动员,做足了功课之后最终决定买一台荣耀智慧屏X1. 荣耀智慧屏X1给我的第一印象就是它的开机时间真的很短,2秒左右就开机了,一度让我以为只是 ...

  8. 视频类APP体验报告

    一.前言概述 1. 研究背景 短短的几年,爱奇艺在网络视频领域就超越了曾经的优酷.土豆,夺得当下视频类APP月活榜首和国内APP月活榜单第三(高达5.35亿,仅次于QQ):今年又完成了上市,可谓风光无 ...

  9. 雷鸟Air+理想L9:开启车内AR沉浸观影新体验

    随着汽车朝着智能化的方向发展,车载娱乐体验也在不断升级:一方面是车机屏幕越来越大,越来越多,以最新的理想L9为例,车内配备1块中控大屏和2块娱乐大屏,具备丰富的娱乐应用:另一方面,车载娱乐体验不断升级 ...

最新文章

  1. mysql注入实例获取答案_本文实例讲述了MySQL解决SQL注入的另类方法。分享给大家供大家参考,具体如下:问题解读我觉得,这个问题每年带来的成本可以高达数十亿美元了。本文就来谈谈,...
  2. 十五、稀疏矩阵的乘法运算
  3. POJ - 1961 最小循环节
  4. qhfl-6 购物车
  5. dosbox 伪指令dd为什么会报错_什么是SQL函数?为什么使用SQL函数可能会带来问题?...
  6. BZOJ 2244 [SDOI2011]拦截导弹 (三维偏序CDQ+线段树)
  7. linux sleeping进程多_Linux下找出吃内存的方法总结
  8. Python--MySql学习(10.30)
  9. 独立站现在好不好做?
  10. 网页设计html图片滚动特效,网站设计|滚动特效全面讲解!
  11. mysql 获取农历年份_ASP获取农历日期程序代码
  12. \t\t林荫苗圃 苗木和苗圃 好苗木种植技术是关键 它好我也好
  13. 电脑计算机睡眠时间设置为永不熄灭后,电脑仍会熄屏,重新唤醒时出现在登录界面怎么办?
  14. 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现?
  15. Java开发人员幽默外号,姓李的幽默外号 - 经典语录大全
  16. Linux系统下如何在防火墙开放指定端口
  17. 12,MongoDB的视图
  18. java人民币大小写转换函数_java开发_数字转换汉语中人民币的大写_完整版
  19. 教程——从外网远程控制内网电脑
  20. ERP软件的价格设计

热门文章

  1. 视频中时标(timeScale)、时基(timeBase)、时间戳(pts)的概念
  2. 关于 ubuntu上qt5.9.3使用openssl出现“openssl unsupport platform” 的解决方法
  3. 好玩!C语言打印彩色字符,还能闪烁!
  4. Linux征途——总结与扩展
  5. python中grid[pos_python – 使用grid_2d_graph在networkx中绘制MxM节点的方形网格时删除旋转效果...
  6. 按键精灵获取当前鼠标位置的颜色值HSL模式
  7. java实现漏掉的账目明细
  8. Linux C语言中的read write lseek的使用
  9. 滴答清单待办状态同步更新Notion
  10. Science: 功能饮料里面的这种添加剂会使动物寿命更长——这对人类意味着什么尚不清楚...