Android tips tool 发现的性能问题

转载 2013年05月12日 18:41:01


Invalid layout param in a LinearLayout: layout_centerVertical

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.


Use a layout_width 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.


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.


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.


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.


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.

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.

Android tips tool 发现的性能问题

1.ObsoleteLayoutParam不起作用的标签 Invalid layout param in a LinearLayout: layout_centerVertical Iss...
  • time_hunter
  • time_hunter
  • 2013年03月12日 18:19
  • 9451


1. 如何知道Eclipse的版本 Eclipse 3.1 版本代号 IO 【木卫1,伊奥】   Eclipse 3.2 版本代号 Callisto 【木卫四,卡里斯托 】   Eclips...
  • xhjx2618
  • xhjx2618
  • 2013年03月12日 14:40
  • 232

Eclipse 插件安装与卸载的10个小窍门

Eclipse Galileo拥有一个全新的插件安装对话框。事实上,整个过程完全重新分解了。这在Eclipse已成为一种惯例:Eclipse 3.3和3.4分别拥有完全不同的插件安装程序。51CTO编...
  • beyond_liyy
  • beyond_liyy
  • 2011年05月18日 16:04
  • 4738

Oracle 性能问题排查自动化脚本

最近对Oracle数据库的自动化运维比较感兴趣,对数据库性能问题的自动发现告警功能琢磨了一下。 废话少说,进入 Oracle Performance troubleshooting automa...
  • qq_36510261
  • qq_36510261
  • 2018年01月19日 15:23
  • 64


一、             现象概述和初步分析在生产系统中最近经常发现数据库CPU冲高的现象,冲高的时间不定最长情况有达到过2、30分钟的情况,甚至会较严重的影响数据库服务器的运行和稳定。每次出现这...
  • michaelsdet
  • michaelsdet
  • 2008年09月04日 16:52
  • 1415

性能测试常见问题 (性能论述)

 名词解释   性能测试FAQ   1. 性能测试的基本过程是什么?   2. 如何准备测试环境?   3. 准备环境时,由于条件限制,机器系统硬件环境可能不同,机器硬件的cpu...
  • lishenglong666
  • lishenglong666
  • 2015年09月11日 17:40
  • 719


转自: (1)数据对齐是否更快? 从学习数据结构的第一天...
  • Adam040606
  • Adam040606
  • 2015年11月10日 11:40
  • 256


  • wdcxccsdn
  • wdcxccsdn
  • 2014年11月08日 23:00
  • 1297


转载: 值得收藏的AS插件 ->_->:
  • lylodyf
  • lylodyf
  • 2017年02月16日 11:49
  • 864


  xmlns=""  xmlns:x="http://schemas.microso...
  • java3344520
  • java3344520
  • 2010年02月11日 18:37
  • 2842
您举报文章:Android tips tool 发现的性能问题