Android P版本 新功能介绍和兼容性处理(四)Android Profiler

2024-02-29 04:50

本文主要是介绍Android P版本 新功能介绍和兼容性处理(四)Android Profiler,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android Studio使用Android Profiler取代了Android Monitor,通过这些工具我们可以对网络,CPU,内存,代码进行分析,提高项目质量,通过点击如下按钮即可打开Android Profile
这里写图片描述
或者你也可以通过点击 View > Tool Windows > Android Profiler 来打开Android Profile


当我们点击Android Profile之后,会弹出选择模拟器的界面,如下
这里写图片描述
当选择已连接的设备之后,点击OK,稍后就会进入到Android Profile页面,页面如下图所示
这里写图片描述
可以看到我们无法在当前线程中进行分析,那就点击Run Configuration吧,配置界面如下,勾选 enable advanced profiling 复选框即可
这里写图片描述
当然在打开这个配置页面之后,每个人的环境和grade是不一样的,那肯定遇到的问题也有很多,别着急,按照他的提示进行配置就好,比如有的人无法勾选复选框,那是因为gradle插件版本太低,需要2.4以上版本才可以,那就更新下gradle;

当我们配置好之后,我们重新点击Android Profile图标,刷新下,刷新后的界面如下
这里写图片描述

可以发现左边的session区表示每次打开Android Profile的session,你可以通过点击上面的红色方块关闭你不需要的session;也可以通过下图选择进程来开启一个Android Profile调试
这里写图片描述

我们通过加号按钮来创建Android profile,如图所示
这里写图片描述

我们也可以通过右边区域的CPU, MEMORY , NETWORK来进行不同的检查


我们先来看下 利用 Network Profiler 检查网络流量,选择NETWORK之后的页面如下
这里写图片描述

1)首先先说下为什么要进行网络分析
设备在请求网络连接的时候,是需要依靠WIFI装置或者高功耗的移动来收发数据,无线装置不仅要消耗电力来传输数据,还需要消耗额外的电力来开启并且不锁定屏幕。通过Network分析,我们可以检查网络请求峰值,也可以针对性的使用wakelock来减少电量消耗;总的来说进行网络分析的目的有
a: 检测app使用网络情况,针对各种情况进行网络优化
b: 节约电源

在上图中,我们可以在时间线中选择对应的时间片段来进行详细分析,查看发送和接收的文件列表,或查看有关所发送或接收的选定文件的详细信息,这些操作的前提是开启“高级分析”,其开启步骤如下:

->选择 Run > Edit Configurations。
->在左侧窗格中选择您的应用模块。
->点击 Profiling 标签,然后勾选 Enable advanced profiling。
如下图,点击ok便开启了高级分析功能
这里写图片描述

那高级分析功能到底可以分析什么了?其实从上图的“Enable advaced…”下面的解释就能很清楚的看到了

注:对于原生代码,不可使用高级分析功能。 如果您的应用是纯原生应用(不含 Java Activity 类),则不可使用高级分析功能。 如果您的应用使用了 JNI,则可使用部分高级分析功能,例如 Event 时间线、GC Event、Java 分配对象和基于 Java 的网络 Activity,但不能检测基于原生的分配和网络 Activity。

当我们开启了“高级分析”之后,就可以在时间线先选择一段时间进行具体分析

如下图
这里写图片描述

最主要的有区域2和区域4,其中
区域2我们可以选择对应时间段来查看具体的网络请求
区域4我们可以查看具体请求的消息头和消息体

但是你会发现并不是所有的网络请求都能区域2中显示,这是因为目前Network Profiler 只支持 HttpURLConnection 和 OkHttp 网络连接库;

我们在看下Network Profile中其他几个按钮的作用
这里写图片描述

我们知道区域2是时间线区域,时间线是不断滚动的,其中点击上图中的4即可暂停时间线,点击1和2分别表示缩小和扩大时间线,点击3是恢复时间线区域;

网络请求可以来自用户操作,也可能来自应用程序代码的请求或来自与您的应用程序通信的服务器。我们通过DDMS的Network Traffic tool能够查看应用程序如何以及何时进行网络传输数据。

之前我们说到利用好网络分析工具,我们可以更好的节省网络耗电量,那么我们该如何做?

第一招:收集网络流量数据
标记网络请求来自哪里,针对请求来源来分析,可以更好的提高网络资源利用率,无外乎三种类型
1)用户自己的请求:如更新某一个页面
2)应用程序自己的请求:如新闻页面中缓存未读文章的请求
3)来自服务器网络请求:如服务器向应用程序发起的推荐图书列表请求

为了测试优化网络流量,我们肯定要写一些测试代码,请注意这些分析代码务必不得放入生成环境apk中,同时并不是所有的网路都支持TrafficStates类
google develop中有可能建议你构建network-test,其实这个只是为了在发布版本中删除测试代码罢了,我们没有必要完全照搬google的代码

The Network Traffic工具会用三种颜色来区域上述三种操作类型,那该如何标记网络请求类型尼

1)定义三个变量,分别表示来自用户,App,服务器的网络请求

public static final int USER_INITIATED = 0x1000;
public static final int APP_INITIATED = 0x2000;
public static final int SERVER_INITIATED =0x3000;

2)找出你项目中进行网络请求的代码,无外乎HttpUrlConnection,httpclient,okhttp等,添加如下测试代码

    /*** 执行HTTP请求*/public final void exec() {if (Build.VERSION.SDK_INT >= 14) {try {TrafficStats.setThreadStatsTag(MiGuTvBillingMain.USER_INITIATED);// make network request using HttpClient.execute()} finally {TrafficStats.clearThreadStatsTag();}}}

3)打开DDMS, 进入DDMS页面;
3.1)选择Network Statistics。 尝试Window > Reset Perspective操作
3.2)在Network Statistics tab中选择要调试的应用程序,然后单击开始按钮。
3.3)使用以下adb命令清除应用程式数据:

 adb shell pm clear package.name.of.app

随着Android Studio的升级,很多工具都被替代了,比如DDMS就被Android profile替代,那在3.1和3.2版本中,有哪些工具被替代了?参见如下表
这里写图片描述

下面看下如何打开DDMS

在Android Studio窗口的Temminal中执行如下命令即可
这里写图片描述
稍等片刻,你就可以看到DDMS启动了,有的时候你启动DDMS会发现如下问题
这里写图片描述
很明显8700端口被占用了,估计是你开了两个IDE,如此处我开了eclipse和android studio,8700端口被eclipse占用了;
解决方法也很简单,关闭模拟器,重启即可

每个设备一次只能连接到一个调试器进程。 因此,如果您使用Android Studio在设备上调试您的应用程序,则需要从Android设备监视器附加调试器进程之前断开Android Studio调试器与设备的连接。

3.4)启动应用程序

如果操作成功,你就可以看到如下页面
这里写图片描述

此时我们就能很清楚的看到三种不同的请求类型;通过这张图,我们就可以做第二步优化动作了

第二招:分析上图中的各种流程使用情况
        应用程序有效地访问网络,可以看到它通过网络进行的通信紧密组合在一起,间隔时间很长,应用程序没有连接请求。
这里写图片描述
上图展示的是一个次优的app,他显示了app正在频繁的使用网络,网络没有休息时间,这就意味着app在不断消耗电量;
这里写图片描述
这张图展示就是一个优化后的app使用网络的情况,可以看出优化后的网络将连发式进行网络请求改为分段式,这样CPU就能得到休眠的机会,提高了电池的使用时间

第三招:分析用户行为使用的流量
        分析用户的网络流量的目的是查看其使用网络的情况,并尝试创建或增加网络未访问的时间段,以加速app对用户的响应度;以下方法可以优化用户的网络请求
1)预测用于行为:即app预估用户行为,在一次请求中集中请求多个数据
2)在发起请求前检查网络的连接性和监听网络状态切换
3)减少连接数量,即重用现有网络连接,这个比启用新的网络连接更有效

第四招:分析App使用流量,如下有几个方法可以提高app测网络请求
1)批量进行网络请求,我们可以推迟网络处理,在某一时间段内集中处理这些请求,以提高电池使用率,这是因为在移动设备上,打开wifi或者3/4G,建立连接并保持唤醒的过程需要大量电源消耗。对于如何发起集中式的请求,可以有如下三个方案参考
这里写图片描述
2)允许系统检查连接性

第五招:分析服务端主动发送给客户端的网络情况
这个需要用到google的GCM,这里就不分析了,原因你懂得


至于CPU和MEMORY Profile请参考如下链接

参考链接
NetWork Profile
Memory Profile
CPU Profile
Device Monitor

这篇关于Android P版本 新功能介绍和兼容性处理(四)Android Profiler的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/757630

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言