Android应用开发之性能测试之TraceView

性能分析工具 Android TraceView TraceView是什么Traceview是android平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到method。 阅读详情

传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.youkuaiyun.com/leverage_1229

        TraceView是Android平台下的性能测试工具,它以图形化的方式向我们展现待跟踪程序的性能,并且能具体到method。TraceView包含两个部分,一部分用于程序执行过程中采集数据,另一部分用于在程序执行完毕后对数据进行分析。

1采集数据

        用户可以选择激活或者取消实时数据采集功能。当该功能激活以后,TraceView进程就会记录下用户程序每一次的方法调用和耗时。并将数据保存到SDCard上的一个二进制文件中。

        在程序中调用android.os.Debug.startMethodTracing()方法启动实时数据采集,代码如下:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //启动实时数据采集 "/sdcard/calc.trace"
        Debug.startMethodTracing("calc");
    }
    protected void onStop(Bundle savedInstanceState) {
        //停止实时数据采集
        Debug.stopMethodTracing();
        super.onStop();
    }

2分析数据

        把sdcard的二进制数据文件导出到电脑上,在Dos窗口上进入Android SDK的tools目录,然后执行命令:
        traceview c:\\calc.trace
        执行指令后将打开图形化分析界面。

        窗口的上半部分是时间轴面图(Timeline Panel),右上角的值为方法执行时间的总和。窗口的下半部分是对各个方法调用的汇总图(Profile Panel)。
        界面上方的尺子代表了MethodTracing的时间段(从Debug.startMethodTracing("")到Debug.stopMethodTracing()的时间)。

列的名称列的涵义
Name方法的名称
Incl %执行方法总时间在整个MethodTracing时间里所占百分比
Inclusive执行方法总时间
Excl %执行方法基本操作的时间(不包括调用子方法的耗时)在整个MethodTracing时间里所占百分比
Exclusive执行方法基本操作的时间(不包括调用子方法的耗时)
Calls+Rec执行方法的次数(如:"4+0"表示4次非递归调用,0次递归调用;"3/2"表示3次非递归调用,2次递归调用。)
Cpu Time执行方法的平均时间(即执行方法总时间/执行方法的次数)       
         注:如果方法A调用方法B,那么方法A称为方法B的"parents",方法B称为方法A的"children"。最下边的搜索框(Find:),可以进行方法类等搜索。
GD32F303实战:用定时器4触发ADC2+DMA,实现10ms精准采样1024点的完整流程 本文详细介绍了在GD32F303微控制器上使用Timer4触发ADC2配合DMA传输,实现10ms精准采样1024点的完整方案。从硬件架构设计、时钟树配置到定时器参数计算,提供了完整的工程实现流程和常见问题排查方法,适用于工业传感器监测等高实时性场景。 阅读详情

相关推荐

差分逻辑电平——LVDS、CML、LVPECL、HCSL互连

首先了解差分逻辑电平结构,也包括单端逻辑电平常见的逻辑电平_常用的逻辑电平-优快云博客注:ECL >> PECL >> LVPECL演变而来;QDR(Quad Data Rate):四倍数据倍率本文章只涉及差分逻辑电平:LVDS 、LVPECL、CML (高速)(最常用)在任何给定的系统设计中,必须设计驱动器侧和接收器侧之间的时钟逻辑转换。通过在它们之间增加衰减电阻和偏置电路来将一个差分时钟转换为其他类型的差分逻辑,来衰减摆幅电平并重新偏置共模输入接收器。

weixin_45365488的博客 4万+

Android性能测试:Systrace与Traceview

本文从工具原理、使用方法和优缺点对比等方面详细介绍了Systrace与Traceview两种Android性能测试工具。通过对比分析,我们可以看出,Systrace和Traceview各有优点和缺点,开发者可以根据实际需求选择合适的工具进行性能测试。在Android应用开发中,性能测试具有重要意义。Systrace与Traceview作为两种常用的性能分析工具,能够帮助开发者发现并解决性能问题,提高应用质量。为了更好地利用这些工具,开发者需要不断学习和实践,掌握它们的原理和用法。

2501_92487619的博客 443

uniapp实战:mui-player插件如何完美适配m3u8/flv直播流(附完整代码)

本文详细介绍了如何在Uniapp中使用mui-player插件完美适配m3u8和flv直播流,提供从基础配置到高级优化的全流程解决方案。通过动态加载策略、响应式布局和内存管理,实现跨平台稳定播放,适用于企业级直播应用开发。

weixin_29001655的博客 236

<只看这个就够了。。。>Android自动化测试及性能优化

  Android自动化测试及性能优化 分类: Android Java Tools2012-12-09 23:31 4300人阅读 评论(0) 收藏 举报 软件自动化测试对于程序员来说能够确保软件开发的质量和效率。在Android编程中,Android集成了Junit单元测试框架,因此我们可以通过Junit来进行单元测试以及自动化测试。 1、引入Junit测试框架 在Manif...

weixin_33862188的博客 114

逆向分析TikTok的Cronet网络库:定位libsscronet.so并Hook关键SSL函数

本文深入探讨了逆向分析TikTok的Cronet网络库的技术细节,重点介绍了如何定位libsscronet.so并Hook关键SSL函数。通过Java到Native的调用链路追踪、So库定位策略和SSL验证函数的动态Hook技巧,帮助开发者突破定制化网络库的协议加密防护,实现流量解密和协议分析。

weixin_27875131的博客 969

构建家庭NAS之三:在TrueNAS SCALE上安装qBittorrent

以qBittorrent为例,说明如何在TrueNAS SCALE上使用docker来安装应用。

luoqingyong的博客 7006

使用android.os.Debug类调试Android应用程序

<br />在Android软件开发中最终的性能测试和调试显得至观重要,今天Android123和大家一起讨论下Google送给我们的android.os.Debug类,使用起来比较简单,我们先导入 import android.os.Debug这个包。<br /><br />在需要开始跟踪的地方加入 Debug.startMethodTracing(“/sdcard/cwj”); 复制代码 最终在停止调试的地方加入 Debug.stopMethodTracing();复制代码 最终在sdcard上

zhjp4295216的专栏 1133

AI数字人直播带货全攻略:从零搭建到高效运营

本文提供了一份从零开始搭建与运营AI数字人直播间的完整指南。详细解析了AI数字人直播带货的核心价值与适用场景,并分步讲解了硬件准备、软件选择、数字人创建、话术编排、OBS推流设置及开播测试等关键环节。最后,文章还分享了高效运营策略与常见避坑指南,旨在帮助商家利用AI技术实现降本增效,打造24小时不间断的智能带货直播间。

weixin_29269441的博客 2234

性能优化与测试

一、UI性能优化 1. 由于View会不断刷新、变化,所以应尽量减少不必要的onMeasure、onDraw调用。 2. 对于ListView、GridView等需要Adapter加载数据的控件,在getView方法中应尽量减少访问耗资源的资源,例如,大量的写入文件操作,访问网络等。否则这些控件会出 现不时的停顿现象。如果非要访问这些资源,应将这些操作放...

weixin_30737433的博客 468

[网络安全提高篇] 一二〇.恶意软件动态分析经典沙箱Cape批量提取动态API特征

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文详细介绍动态分析沙箱Cape的安装过程,其是一个开源的自动恶意软件分析系统,通过自动运行和分析恶意软件,全面分析和提取恶意软件的关键特征。然而,当样本数量增加时,单个样本分析会降低效率。这篇文章将讲解如何实现Cape沙箱的批量分析,通过调用Python脚本文件来实施批量处理,并将分析结果存储在指定位置,最后补充submit.py的参数及Python调用方式。基础性文章,希望对您有帮助!

杨秀璋的专栏 4121

深入剖析 YOLOv11 中的 C2PSA 注意力机制

YOLOv11中的C2PSA注意力机制在目标检测领域取得突破性进展。该机制通过跨通道分组交互和轻量级位置编码,在仅增加0.6%计算量的情况下提升mAP 1.5-2.3个百分点。C2PSA创新性地结合局部跨通道交互、位置编码和双分支并行调制,采用纯卷积实现自注意力,避免传统注意力机制的高计算复杂度。实验表明,C2PSA在COCO数据集上以微小计算代价显著提升检测性能,特别是对小目标和遮挡目标效果突出。该模块可直接嵌入YOLO架构,为轻量级目标检测提供新的优化方向。

shrgegrb的博客 3397

Android性能(时间)分析工具-TraceView的使用

因最近查项目的初始化耗时问题,使用到了TraceView工具,这里就来介绍下TraceView工具的使用以及如何分析耗时。    1.TraceView的使用     TraceView的使用共有下面4步:        a.工程中加入标志TraceView开始和结束的代码:               1).在怀疑耗时的代码前加入这行代码:Debug.startMetho

fengzhonghen的专栏 1701

【异常】OpenClaw认证 Please carry the API secret key in the ‘Authorization‘ field of the request header

OpenClaw助手Agent因401认证异常导致业务中断的排查方案。该异常由大模型API鉴权全量失败触发,主要根因包括API凭证配置错误、密钥过期、账号权限不足或请求格式不规范。解决方案分四级:优先校验并修正API密钥;排查账号状态与调用权限;检查请求格式规范;最后排查网络或服务商问题。建议建立密钥生命周期管理机制,定期监控额度,使用专用API密钥以规避类似问题。该异常属于凭证配置类故障,不影响系统稳定性。

奶爸的编程之路,也就一周冷个三天 464

TraceView android 性能优化工具

TraceView界面 现来看一下整个界面的图,整个界面包括上下两部分,上面是你测试的进程中每个线程的执行情况,每个线程占一行;下面是每个方法执行的各个指标的值 上面一部分是你测试进程的中每个线程运行的时间线,下图中可以可以看到,主要只有一个main线程在执行,因为我滑动了一下列表,main线程(UI线程)正在进行绘制View呢~ 然后我点击了序号为133的一个方法io.bxbx

fay8048的博客 1471

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

android TraceView使用以及listview 的性能优化测试(一)

今天看了下文档,说TraceView 对程序的的性能和优化有很大的帮助: 本人比较懒,文章也没继续往下下看,直接百度了下TraceView  的使用技巧,资源很多,介绍怎么使用  推荐:http://blog.youkuaiyun.com/itachi85/article/details/6857324  当然具体怎么做的步骤简单的一下,大概分这么几步:  一:在创建avd ,给sd卡

android_xiaozhou的专栏 825

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android工具之TraceView

如何分析android应用性能,java函数调用关系。   1.mksdcard -l sdcard 512M /root/.android/sdcard.img   2.在应用程序中加入trace 的开始和结束函数(详细说明参考开发文档)   // start tracing to "/sdcard/calc.trace"   Debug . startMethodTracing ( "

android_panda的时间 993

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android调试之TraceView

TraceView 在应用运行时,可以使用Debug类打开操作日志记录功能,打开后Android会详细记录应用花在每个线程以及线程的每个函数的调用时间。操作日志记录完毕后,可以使用Android SDK自带的traceView工具将应用操作日志图形化显示,在应用开发的过程中,可以用它来观察应用的性能瓶颈。 1.记录应用操作日志 记录应用操作日志的方法有两种: 利用Debug类的startMeth...

weixin_30872499的博客 171

正确使用Android性能分析工具——TraceView

前面唠叨 最近公司app中有些列表在滑动的时候会有卡顿现象,我就开始着手解决这些问题,解决问题之前首先要分析列表滑动的性能瓶颈在什么地方。因为之前不会正确使用TraceView这个工具,主要是看不懂TraceView界面下方数据指标的值代表什么意思…以前我用StopWatch类来分析性能,现在觉得弱爆了…不过有些地方StopWatch工具类还是很简单好用的~ 网上可以找了很多博客来介绍

u010129251的专栏 412

android高效代码

编写高效的Android代码<br />http://www.chinaup.org/docs/toolbox/performance.html<br /> 【Android】Tools之 Traceview使用<br />http://chaozhong84.spaces.live.com/blog/cns!FC149E9A3FC0182B!304.entry<br /> <br />避免内存泄露, 有效利用内存 <br />http://blog.youkuaiyun.com/wukunting/archiv

shlpyy的专栏 551

Android性能调试工具的使用

一、TraceView工具traceview是常用的调试工具之一,下面来通过例子描述下。在4.4的开发者模式中打开GPU呈现模式分析,设置为按线条,然后下面会出现一串的柱状图,大致有三种颜色,蓝色、红色、黄色。另外有一条绿线。(蓝色)Draw:表示在Java中创建显示列表部分中,OnDraw()方法占用的时间。比如你在一个列表的生成函数里加入了sleep,会发现蓝色部分会很长。 (红色)Proces

ouxie的专栏 773

android使用traceView进行性能测试

在android开发中,经常会需要优化apk的性能,然而那些方法是比较耗费性能的,哪些方法又是比较占用内存的,我们很难得知,好在google为我们提供了一个工具,traceView,该工具在sdk的tools文件夹里边,只要配置了环境变量,就可以直接使用的。traceView是Android中为开发者提供的一个可视化的工具,用来评测app中每一个方法运行的性能。我首先编写一个简单的activity,

mockingbirds的专栏 2182

Android studio 中traceview的使用

在Android studio中打开traceView 在studio工具栏中点击tools->Android->Android Device Moniter TraceView界面 现来看一下整个界面的图,整个界面包括上下两部分,上面是你测试的进程中每个线程的执行情况,每个线程占一行;下面是每个方法执行的各个指标的值 上面一部分是你测试进程的中每个线程运行的时间线,下图中可以

LK1105010206的博客 6741

android debug工具集(挺全的)

[转载]android debug工具集(挺全的) Posted on 2011-04-23 11:50 周柯文 阅读(4364) 评论(0) 编辑 收藏 1.TraceView 1)功能:用于热点分析和性能优化,分析每个函数占用的CPU时间,调用次数,函数调用关系等  2)方法:   a)在程序代码中加入追踪开关   import android.os.Debug;   …

hualizide的专栏 683

使用traceview进行Android性能测试

一、 TraceView工具简述   Traceview是android平台配备的一个很好的性能分析工具。它可以通过图形界面的方式让我们了解我们要跟踪的程序的性能,并且能具体到method。   二、 TraceView工具使用方法   TraceView有三种启动方式,下面逐一介绍:   1、 代码中启动   可以在代码中添加   Debug.startMethodTrac...

bailu2020的博客 187

Android TraceView 最权威的性能分析工具

TraceView是什么Traceview是android平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到method。Traceview的作用查看跟踪代码的执行时间,分析哪些是耗时操作 可以用于跟踪方法的调用,尤其是Android Framework层的方法调用关系如何使用TraceView使用TraceView主要有两种方式:最简单的方式就

jys1115的专栏 1109

traceView的使用详解

1、DDMS与traceView的区别 DDMS是一个集调试、浏览、控制等操作为一体的工具箱,而traceView只是一个性能调优工具,可通过它查看程序中方法的执行效率等指标。 2、traceView的使用 traceView的开启有两种方式 ①最简单的方式就是直接打开DDMS,选择一个进程,然后按上面的“Start Method Profiling”按钮,等红色小点变成黑色以后就

梦在当下的博客 6951
上一篇: Android金背大刀之ToggleButton之稍息立正
下一篇: GoF23种设计模式之行为型模式之状态模式
innovation
博客等级 码龄14年 251粉丝 136原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值