先翻译刚好在研究到的一段,其余的无限期待续。

1.ObsoleteLayoutParam不起作用的标签

Invalid layout param in a LinearLayout: layout_centerVertical

Invalid layout param in a ScrollView: layout_weight

Issue: Looks for layout params that are not valid for the given parent layout
Id: ObsoleteLayoutParam

The given layout_param is not defined for the given layout, meaning it has no effect. This usually happens when you change the parent layout or move view code around without updating the layout params. This will cause useless attribute processing at runtime, and is misleading for others reading the layout so the parameter should be removed.

2.HandlerLeak 非静态的内部类Handler

This Handler class should be static or leaks might occur (com.borqs.appinstaller.AppMoveFragment.LoadAppHandler)

Issue: Ensures that Handler classes do not hold on to a reference to an outer class
Id: HandlerLeak

In Android, Handler classes should be static or leaks might occur. Messages enqueued on the application thread's MessageQueue also retain their target Handler. If the Handler is an inner class, its outer class will be retained as well. To avoid leaking the outer class, declare the Handler as a static nested class with a WeakReference to its outer class.

3.FloatMath 有时候Android有更好的API实现相比Java

Use android.util.FloatMath#ceil() instead of java.lang.Math#ceil to avoid argument float to double conversion

Issue: Suggests replacing java.lang.Math calls with android.util.FloatMath to avoid conversions
Id: FloatMath

On modern hardware, "double" is just as fast as "float" though of course it takes more memory. However, if you are using floats and you need to compute the sine, cosine or square root, then it is better to use the android.util.FloatMath class instead of java.lang.Math since you can call methods written to operate on floats, so you avoid conversions back and forth to double.

http://developer.android.com/guide/practices/design/performance.html#avoidfloat

4.InefficientWeight

Use a layout_width/layout_height of 0dip instead of wrap_content for better performance

Issue: Looks for inefficient weight declarations in LinearLayouts
Id: InefficientWeight

When only a single widget in a LinearLayout defines a weight, it is more efficient to assign a width/height of 0dp to it since it will absorb all the remaining space anyway. With a declared width/height of 0dp it does not have to measure its own size first.

当在一个LinearLayout布局中仅包含一个定义weight属性的view控件时,直接指定0dp到其width或height属性更高效,因为在初始化时不再需要测量这个view控件的尺寸,反正到最后它都会霸占所有剩余空间的了。

* 注:weight属性仅应用于控件并排排列共用的空间方向,如vertical方向LinearLayout中子控件的height,此时对width无效。

5.NestedWeights

Nested weights are bad for performance

Issue: Looks for nested layout weights, which are costly
Id: NestedWeights

Layout weights require a widget to be measured twice. When a LinearLayout with non-zero weights is nested inside another LinearLayout with non-zero weights, then the number of measurements increase exponentially.

6.UnusedResources

The resource R.drawable.ic_action_search appears to be unused

Issue: Looks for unused resources
Id: UnusedResources

Unused resources make applications larger and slow down builds.

7.DrawAllocation 避免在draw和layout的时候创建对象,频繁的调用,垃圾回收操作会影响一些UI的体验

Avoid object allocations during draw/layout operations (preallocate and reuse instead)

Issue: Looks for memory allocations within drawing code
Id: DrawAllocation

You should avoid allocating objects during a drawing or layout operation. These are called frequently, so a smooth UI can be interrupted by garbage collection pauses caused by the object allocations.

The way this is generally handled is to allocate the needed objects up front and to reuse them for each drawing operation.

Some methods allocate memory on your behalf (such as Bitmap.create), and these should be handled in the same way.

8.UseCompoundDrawables

This tag and its children can be replaced by one <TextView/> and a compound drawable

Issue: Checks whether the current node can be replaced by a TextView using compound drawables.
Id: UseCompoundDrawables

A LinearLayout which contains an ImageView and a TextView can be more efficiently handled as a compound drawable.

There's a lint quickfix to perform this conversion in the Eclipse plugin.

9.MergeRootFrame

This <FrameLayout> can be replaced with a <merge> tag

Issue: Checks whether a root <FrameLayout> can be replaced with a <merge> tag
Id: MergeRootFrame

If a <FrameLayout> is the root of a layout and does not provide background or padding etc, it can often be replaced with a <merge> tag which is slightly more efficient. Note that this depends on context, so make sure you understand how the <merge> tag works before proceeding.

http://android-developers.blogspot.com/2009/03/android-layout-tricks-3-optimize-by.html

10.UselessParent 有些Layout可以省略

This LinearLayout layout or its FrameLayout parent is useless

Issue: Checks whether a parent layout can be removed.
Id: UselessParent

A layout with children that has no siblings, is not a scrollview or a root layout, and does not have a background, can be removed and have its children moved directly into the parent for a flatter and more efficient layout hierarchy.

英文版转自:http://blog.csdn.net/time_hunter/article/details/8664665

Android tips tool 发现的性能问题(转载翻译)的更多相关文章

  1. Android Tips – 填坑手册

    出于: androidChina   http://www.androidchina.net/3595.html 学习 Android 至今,大大小小的坑没少踩,庆幸的是,在强大的搜索引擎与无私奉献的 ...

  2. Android性能測试 一些适用于Android Studio的代码审查和性能測试工具

    导言: Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,因为QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进 ...

  3. Android图片处理(Matrix,ColorMatrix) - 转载

    Android图片处理(Matrix,ColorMatrix) 转载自:http://www.cnblogs.com/leon19870907/articles/1978065.html 在编程中有时 ...

  4. [Android]使用Dagger 2来构建UserScope(翻译)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6237731.html 使用Dagger 2来构建UserSco ...

  5. [Android]使用Dagger 2依赖注入 - API(翻译)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5092525.html 使用Dagger 2依赖注入 - API ...

  6. [转载]Android利用convertView优化ListView性能

    本的getView写法 Java代码public View getView(int position, View convertView, ViewGroup parent) {View view = ...

  7. android性能小贴士 翻译

    转自http://developer.android.com/training/articles/perf-tips.html 性能小贴士: 这篇文档主要一些微优化可以提升应用程序性能,但是这些改变不 ...

  8. Android_性能优化转载

    胡凯 RSS Blog Archives Android Training in Chinese About Android性能优化典范 JAN 17TH, 2015 | COMMENTS 2015年 ...

  9. Graphic32中TBitmap32.TextOut性能分析[转载]

    转载:http://blog.csdn.net/avan_lau/article/details/6958497 最近在分析软件中画线效率问题,发现在画一些标志性符号的方法,存在瓶颈,占用较大的时间. ...

随机推荐

  1. lnmp配置支持thinkphp和nginx路由url重写

    ThinkPHP3.2.3项目放到lnmp环境之后只能打开首页,或者通过传参方式打开控制器,否则就一直显示404页面.搞了一上午,终于解决了 step1: 修改php.ini cgi.fix_path ...

  2. Java应用:经纬度匹配(geohash加密)

    本文采用http://gc.ditu.aliyun.com地址进行经纬度匹配,无数量限制 如果给定经纬度进行geohash加密操作,先解密得到相应gps坐标,具体程序如下所示: import java ...

  3. C语言学习记录_2019.01.29

    C语言的灵魂:指针 #include <stdio.h> int main(int argc, char **argv) {  printf("Hello, World!\n&q ...

  4. 计蒜客-----跳跃游戏(C语言)

    /********************************************************给定一个非负整数数组,假定你的初始位置为数组第一个下标.数组中的每个元素代表你在那个位 ...

  5. Hibernate-ORM:03.Hibernate主键生成策略

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 此篇博客简单记录五种常用的主键生成策咯: 不同的主键生成策略,生成的sql语句,以及hibernate的操作都 ...

  6. python语法join函数

    Python语法中join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. vid = )

  7. I两种冒泡算法

    两种冒泡算法: 第一个循环,I 定位当前坐标,第二个循环 把 I 之后的每个数都与 I 比较(比 I 小的都去坐标I),第二个循环之后 坐标 I 为数组里最小的数值. 效率比较高的冒泡算法: stat ...

  8. thrift服务端到客户端开发简单示例

    (1)首先我们在服务器端写个helloworld.thrift文件,如下所示: service HelloWorld{ string ping(1: string name), string getp ...

  9. 【APUE】Chapter4 File and Directories

    4.1 Introduction unix的文件.目录都被当成文件来看待(vi也可以编辑目录):我猜这样把一起内容都当成文件的原因是便于统一管理权限这类的内容 4.2 stat, fstat, fst ...

  10. 『AngularJS』ngValue

    原文 描述 绑定给定的表达式到input[select]或input[radio]的值,以便当这个元素被选中的时候,设置这个元素的ngModel到绑定的值.当需要使用ng-repeat来动态生成rad ...