时间:2021-05-20
Android——Android lint工具项目资源清理
最近维护的项目已经有两年多,经过很多前辈的迭代,项目并没有变得健壮,而变得很臃肿.用Android lint工具清理了一次,清楚了不少废弃的布局和资源.
1.Android lint工具
可以右键项目,Android tools,退出的时候clear lint markers即可
也可以如图:
2.结果出来了,分析分析
3.xml中view太多,已经超过了80个,影响性能.
布局优化:
尽量使用include、merge、ViewStub标签,尽量不存在冗余嵌套及过于复杂布局,尽量使用GONE替换INVISIBLE,使用weight后尽量将width和heigh设置为0dp减少运算,Item存在非常复杂的嵌套时考虑使用自定义Item View来取代,减少measure与layout次数等。
列表及Adapter优化;尽量复用getView方法中的相关View,不重复获取实例导致卡顿,列表尽量在滑动过程中不进行UI元素刷新等。
背景和图片等内存分配优化;尽量减少不必要的背景设置,图片尽量压缩处理显示,尽量避免频繁内存抖动等问题出现。
自定义View等绘图与布局优化;尽量避免在draw、measure、layout中做过于耗时及耗内存操作,尤其是draw方法中,尽量减少draw、measure、layout等执行次数。
避免ANR,不要在UI线程中做耗时操作,遵守ANR规避守则,譬如多次数据库操作等。
activity_group_number_detail1.xml has more than 80 views, bad for performance
Issue: Checks whether a layout has too many views
Id: TooManyViews
Using too many views in a single layout is bad for performance. Consider using compound drawables or other tricks for reducing the number of views in this layout.
4.没有定义的id,删掉就ok
he id "top" is not defined anywhere.
Issue: Checks for id references in RelativeLayouts that are not defined elsewhere
Id: UnknownId
5.同一个XML重复定义id
在同个一个Xml文件的中如果ID同名,则前一个有效,而后一个无效
是不是复制粘贴的时候出错了?
Duplicate id @+id/group_imageView2, already defined earlier in this layout
Issue: Checks for duplicate ids within a single layout
Id: DuplicateIds
6.ID的引用不在同一级layout中,比如说:控件A在B(B是viewgroup)的下面,而不应该写成A在B的子控件下面.
7.废弃的四大组件,在mainfest.xml中没有清掉.删除就ok
Class referenced in the manifest, com.baidu.location.f, was not found in the project or the libraries
Issue: Ensures that classes referenced in the manifest are present in the project or libraries
Id: MissingRegistered
8.没使用的资源,这是重头戏,对于减小包的大小很有意义.其中包含了xml,dimens等.量比较大,建议先提交SVN之后再删除,如果出了问题立马可以还原.
The resource R.drawable.fc_seekbar_thumb appears to be unused
Issue: Looks for unused resources
Id: UnusedResources
9.这里检测的结果只是提供一种参考,建议用Toast.LENGTH_SHORT或者 Toast.LENGTH_LONG
10.硬编码的问题,使用Context.getFilesDir().getPath()
Do not hardcode "/data/"; use Context.getFilesDir().getPath() instead
Issue: Looks for hardcoded references to /sdcard
Id: SdCardPath
Your code should not reference the /sdcard path directly; instead use Environment.getExternalStorageDirectory().getPath().
11.大家一看就懂了,viewholder的问题
12.handler导致的内存泄漏问题
一两句话说不清,下面是已经说清楚的.
http://blog.csdn.net/lijunhuayc/article/details/47999931
13.webview的父控件,宽高建议用match_parent
提示
Placing a <WebView> in a parent element that uses a wrap_content layout_height can lead to subtle
bugs; use match_parent instead
14.I18N的问题就不说了.
总结:Android lint工具主要功能是规范编码,优化布局性能,去除无用资源.
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Android读取资源文件实例详解本文主要介绍Android读取资源文件,直接从assets读取,从Raw文件中读取,InputStream转String。以下
Android中屏幕密度和图片大小的关系详解前言Android中支持许多资源,包括图片(Bitmap),对应于bitmap的文件夹是drawable,除了dra
Android资源id详解我们平时获取资源是通过findViewById方法进行的,比如我们常在onCreate方法中使用这样的语句:btnChecked=(I
Androidstudio开发工具中,如何如何删除Android项目,下面是在Androidstudio1.5正式版删除Android项目的操作步骤。1、选择单
详解Android中TableLayout中stretchColumns、shrinkColumns的用法android:stretchColumns="1"a