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
public class MyApplication extends Application {
@Override public void onCreate() {
super.onCreate();
if (BuildConfig.DEBUG) {
CrashWoodpecker.flyTo(this);
}
}
}
3. BlockCanary
public int provideBlockThreshold() {
return 1000;
}
4. 代码审查工具
除此之外还有:FindBugs、FireLine.
5. TraceView
TraveView是Android studio集成的一个性能优化工具,相信很多人都知道它,但是用到它的应该不多,它的使用比较复杂,应该说理解比较复杂。它主要计算工程内方法运行所占用的时间,调用次数,以此来优化App运行效率。
例如:一个方法,占用时间比较长,但是调用次数少,那么你就要检测这个方法耗时在什么地方,由什么原因导致?
6.Hierarchy Viewer
hierarchyviewer:检测布局复杂度
打开Hierarchy Viewer
启动Android Device Monitor成功之后,在新的的窗口中点击切换视图图标,选择Hierarchy Viewer,如下图:
7、内存泄漏AMT