Android Studio 工具:Lint 代码扫描工具、
一、Analyze菜单下, 主要有Inspect Code, Code CleanUp,Analyze Dependencies等功能。Inspect Code通过运行Lint检查代码的规范性。Code CleanUp可以自动修改不规范的代码。Analyze Dependencies可以检查工程依赖的库。
二、Android Profiler
Android Studio 3.0 Memory Profiler使用 https://www.jianshu.com/p/e75680772375
https://blog.csdn.net/niubitianping/article/details/72617864
1.资源释放
list.clear()、cursor.close()、bitmap.recycle()、mHandler.removeCallbacksAndMessages(null)、Bitmap.recycle()、imageview.setImageDrawable(null);
动画
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
view.clearAnimation();
}
});
2.代码命名规范(不要一个名字到处使用)
3.不要在onDraw/onlayout/onMeasure(反复执行)中分配对象,会导致大量new新的对象,频繁垃圾回收。
4.一个控件,如果没有定义focusable(可聚焦的),却定义了是clickable(可点击的),那么是不能通过键盘访问的。所以,需要添加一个focusable="true"。
5.<activity>没有在manifest中注册
6.string.xml中未被使用的字库信息;中文字库中有但是英文中没有(多语言)
7.TextView不要使用android:digits、android:inputType、
8.SharedPreferences用apply()代替commit(commit:直接写入有Boolean返回值;apply:先写入内存,再后台写入)
9.字体设置使用:sp; margin, padding, height, width 使用:dp
10.自定义AsyncTask、handler设置为弱引用+ static的。非静态内部类和匿名类将会持有外部类的引用。
11.SparseArray、SparseBooleanArray、SparseIntArray、LongSparseArray代替HashMap
12.baselineAligned="false用来对齐文案的属性默认true不需要时设置为false可以提高性能
13.将TextView和ImageVie合成一个,直接在xml中利用TextView的 android:drawableTop、android:drawableRight等属性指定
14.当一个布局包含另一个时,将布局替换成<merge></merge>
15.简单的循环用foreach替换for
16.contains()返回的是boolean类型;indexOf()返回的是int类型,子字串在父字串中首次出现的位置,没有返回-1。所以contains()效率比较高
17.线程安全用StringBuffer,其他的使用StringBuilder
18.使用字体图标库(或矢量图)代替使用drawable资源。