Android 性能优化之运行时间监测

  以Application为例,在进行项目优化时,我们需要监测该类中所有方法的运行时间,找出最耗时的操作进行分析优化。

  以往比较随意的做法就是在方法前后加上System.currentTimeMillis(),两者数值进行加减得出运行时间,比如:

long start = System.currentTimeMillis();
test1();
long end =  System.currentTimeMillis()-start ;
TBTools.log().i("Running time","运行时间>>>"+end);

 

这样就拿到了test1()的运行时间:

这样在方法数量很少时,可以这么操作,但是试想类中有100个方法时,我们就需要去写100次这样的代码,及其的繁琐,侵入性很强,强耦合的同时代码维护起来也十分的恼火,十分杂乱,如:

long start = System.currentTimeMillis();
test1();
long end =  System.currentTimeMillis()-start ;
TBTools.log().i("Running time","运行>>>"+end);

start = System.currentTimeMillis();
test2();
end =  System.currentTimeMillis()-start ;
TBTools.log().i("Running time","运行>>>"+end);

start = System.currentTimeMillis();
test3();
end =  System.currentTimeMillis()-start ;
TBTools.log().i("Running time","运行>>>"+end);

此时,我们便可以通过AOP(面向切面)来进行此操作,这里我使用的是:AspectJ,当然也有很多其他实现方式,
AOP的好处就是统一管理同一个事件,侵入性很低,还有一些其他好处,可自行百度。

实现方式:

根目录中的build.gradle中添加

dependencies {
    .....
    classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.0'//AOP模式监测
}

app/build.gradle中添加

apply plugin: 'android-aspectjx'

dependencies {
...

compile 'org.aspectj:aspectjrt:1.8.0'

}

完成以上配置步骤后,编写代码:

/**
* 通过使用AOP(切面)来检测方法运行时间
* Created by tanbo on 2019-06-24.
* Hello World!
*/
@Aspect
public class StateMonitor {
    @Around("call(* com.tanbo.rocery_store.APPAplication.**(..))")
    public void getTime(ProceedingJoinPoint joinPoint){
        long start = System.currentTimeMillis();
        try {
            joinPoint.proceed();
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
        long end =  System.currentTimeMillis()-start ;
        Log.i("APOMonitor",joinPoint.getSignature().toString()+"   启动时间>>>"+end);
    }

}

这里我用的注解方式是前后添加的模式Around,后边参数意思是call(返回值 类名地址.方法(参数))。

这个类因为绑定的Aspect,运行时会自动指向这个类,并运行其中的方法,因此不用再去创建它的示例等操作。

编写完毕后直接运行项目,以上代码运行结果:

会打印出该类中的运行方法耗时,这样我们就可以根据需求进行数据筛选和优化等操作,同时也可将这些时间与我们自己的APM进行对接。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Android 性能优化实战篇 PDF 是一本介绍如何优化 Android 应用性能的电子书。该书通过实践经验和案例分析,向读者提供了一系列提高应用性能的实用技巧和方法。 该书首先介绍了性能优化的基本概念,例如应用启动时间、内存管理、网络请求和绘制性能等方面。之后,通过对真实应用情景的分析,详细介绍了一些常见的性能问题,并给出了相应的解决方案。 对于应用启动时间的优化,该书提供了一些切实可行的建议。例如合理使用启动模式、使用冷启动的启动动画、减少启动时的初始化操作等。这些方法可以明显减少应用的启动时间,提升用户体验。 在内存管理方面,该书介绍了如何减少内存泄漏和优化内存占用。通过使用合适的数据结构、避免频繁的对象创建和销毁、注意资源的主动释放等方法,可以有效地减少内存开销,提高应用的稳定性和响应速度。 对于网络请求的优化,该书提供了一些网络请求的最佳实践。例如使用合适的网络请求库、优化请求的并发性、合理使用缓存等。这些方法可以减少网络请求的时间,提高数据加载速度,提升用户体验。 对于绘制性能的优化,该书介绍了如何优化布局和渲染过程,提高界面的流畅度。例如使用合适的布局容器、避免过度绘制、使用硬件加速等。这些方法可以减少界面卡顿和掉帧现象,提升应用的视觉效果。 总而言之,Android 性能优化实战篇 PDF 提供了一些宝贵的经验和方法,帮助开发者优化应用的性能,提升用户体验。不仅可以帮助开发者理解性能优化的基本原理,还给出了一些具体的解决方案,对于 Android 应用的开发和优化都非常有帮助。 ### 回答2: 《Android性能优化实战篇》是一本针对Android开发者的重要参考书籍,旨在帮助开发者提升应用性能,提高用户体验。该书内容包含以下几个方面: 1. 性能分析工具:介绍了常用的性能分析工具,如Android Profiler、TraceView等。通过使用这些工具,开发者可以监测应用在不同场景下的性能情况,例如CPU占用、内存使用、网络请求等,从而快速定位并解决性能问题。 2. UI性能优化:详细介绍了Android UI渲染原理以及优化方法。通过合理使用View的绘制流程、减少UI层级和View的复杂度、适当使用缓存等方法,可以提升UI渲染的速度,提高应用的响应性。 3. 内存优化:介绍了内存泄漏的原因及排查方法,提供了避免内存泄漏的最佳实践。此外,还介绍了内存管理机制以及如何合理地使用内存,包括优化Bitmap的加载、使用SparseArray替代HashMap等。 4. 网络优化:讨论了网络请求中存在的性能问题,并提供了相应的解决方法。例如,合理使用缓存技术、减少网络请求的频率、使用多线程进行并发请求等。 通过学习《Android性能优化实战篇》,开发者可以更全面地了解和掌握Android性能优化方法与技巧,并能够针对具体场景中的性能问题进行准确的分析和解决。这对于提高应用的性能和用户体验具有重要意义。 ### 回答3: 《Android性能优化实战篇》是一本介绍如何提升Android应用性能的实战指南,旨在帮助开发人员通过一系列优化技巧和方法,使应用在运行时更加稳定和高效。 该书首先介绍了性能优化的基本概念和原则,包括优化目标、优化思路等。然后详细讲解了Android系统的性能优化核心内容,如内存优化、CPU优化、网络优化等。其中涉及到了一些基本的工具和技术,如内存泄漏的检测与优化、多线程优化、数据缓存等。同时,该书还提供了一些优化实例,通过示例展示了具体的优化方法和效果。 对于开发人员来说,优化应用的性能是一个非常重要的任务,能够提高用户的体验度和应用的竞争力。《Android性能优化实战篇》通过详细的指导和实例,帮助读者快速理解和掌握性能优化的基本方法和技巧,同时提供了大量实战经验和案例,让读者能够更加深入地了解优化的过程和效果。 总而言之,该书是一本非常实用的Android性能优化指南,对于开发人员来说是一本必备的参考书籍。通过阅读该书,开发人员能够系统地学习和掌握Android应用的性能优化方法,提高应用的性能和质量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值