androidStudio架构

Android开发性能优化工具

2018-03-20  本文已影响932人  闲庭
image.png

1. LeakCanary

LeakCanary用于内存泄露检测,并友好提示给开发者,便于分析和修改。
GitHub:leakcanary
LeakCanary 中文使用说明
LeakCanary集成后会在Activity.onDestory()后会自动监测Activity的内存泄露,仍需要在Fragment.onDestory()后主动监测,保证其工作。
dump耗时较长,需要耐心等待。
后根据堆栈信息修复代码。

使用方法:
在Application中初始化:

public class MyApplication extends Application {
    //...
    private void leakCanary() {
        if (LeakCanary.isInAnalyzerProcess(this)) {
            return;
        }

        mRefWatcher = LeakCanary.install(this);
    }

    public RefWatcher getRefWatcher() {
        return mRefWatcher;
    }

    //提供获取方法
    public static RefWatcher getRefWatcher(Context context) {
        MyApplication application = (MyApplication) context.getApplicationContext();
        return application.getRefWatcher();
    }

}

监测Fragment:

public class BaseFragment extends Fragment {
    protected Context mContext;

    @Override public void onAttach(Context context) {
        super.onAttach(context);
        this.mContext = context;
    }


    @Override public void onDestroy() {
        MyApplication.getRefWatcher(mContext)
                .watch(this);
        super.onDestroy();
    }
}

2. CrashWoodPecker

GitHub:CrashWoodpecker
A nice uncaught exception handler library likes Square’s LeakCanary. Support showing logs both on Logcat & Woodpecker.
优雅的异常捕捉并提示。

public class MyApplication extends Application {
  @Override public void onCreate() {
    super.onCreate();
    if (BuildConfig.DEBUG) {
       CrashWoodpecker.flyTo(this);
    }
  }
}

3. BlockCanary

GitHub:AndroidPerformanceMonitor
BlockCanary — 轻松找出Android App界面卡顿元凶
BlockCanary分析android卡顿
这个库使用了Looper.getMainLooper().setMessageLogging(mainLooperPrinter);
来侵入式的检测,确实不一般。
通过该方法修改卡顿上限:

    public int provideBlockThreshold() {
        return 1000;
    }

4. 代码审查工具

静态代码检查工具:Android studio—Analyze—Inspect Code.../Code cleanup...
Android lint工具是Android studio中集成的一个代码提示工具,它主要负责对你的代码进行优化提示,包括xml和java文件,很强大。
编写完代码及时进行lint测试,会让我们的代码变得非常规范而且避免代码冗余。让我们及时发现代码中隐藏的问题。
举个例子:我们在代码中建立全局变量,而这个变量实际并不需要全局便利,lint在检测之后会提示我们改成局部变量,这对内存优化是一个很强大的促进手段。
如何使用:


这里写图片描述

可以看到有Inspect Code,翻译就是检测代码

这里写图片描述

点击选择whole project(整个项目)即可。

除此之外还有:FindBugs、FireLine.

5. TraceView

TraveView是Android studio集成的一个性能优化工具,相信很多人都知道它,但是用到它的应该不多,它的使用比较复杂,应该说理解比较复杂。它主要计算工程内方法运行所占用的时间,调用次数,以此来优化App运行效率。

例如:一个方法,占用时间比较长,但是调用次数少,那么你就要检测这个方法耗时在什么地方,由什么原因导致?

6.Hierarchy Viewer

hierarchyviewer:检测布局复杂度
打开Hierarchy Viewer
启动Android Device Monitor成功之后,在新的的窗口中点击切换视图图标,选择Hierarchy Viewer,如下图:

image

7. 内存泄漏MAT

具体使用:MAT使用攻略

上一篇下一篇

猜你喜欢

热点阅读