一个ViewPager中频繁刷新,偶发
onLayout time too long
问题
02-09 18:08:45.574 15827 15827 D View : [ANR Warning]onLayout time too long, this =com.xx.CardRecyclerView{6332331 VFED..... .F....ID 0,350-1080,1870 #7f090726 app:id/rv_card}time =679 ms
02-09 18:08:45.574 15827 15827 D View : [ANR Warning]onLayout time too long, this =android.widget.RelativeLayout{1651a16 V.E...... ......ID 0,0-1080,1920}time =679 ms
02-09 18:08:45.574 15827 15827 D View : [ANR Warning]onLayout time too long, this =android.support.v4.widget.DrawerLayout{902ff97 VFE...... ......ID 0,0-1080,1920 #7f0901a1 app:id/drawerLayout}time =679 ms
02-09 18:08:45.575 15827 15827 D View : [ANR Warning]onLayout time too long, this =com.xx.NoScrollViewPager{5f10584 VFED..... ......ID 0,0-1080,1920 #7f090cec app:id/vp_main}time =680 ms
02-09 18:08:45.575 15827 15827 D View : [ANR Warning]onLayout time too long, this =android.widget.FrameLayout{f65c16d V.E...... ......ID 0,0-1080,1920}time =680 ms
02-09 18:08:45.575 15827 15827 D View : [ANR Warning]onLayout time too long, this =android.widget.FrameLayout{690c1a2 V.E...... ......ID 0,0-1080,1920 #1020002 android:id/content}time =680 ms
02-09 18:08:45.575 15827 15827 D View : [ANR Warning]onLayout time too long, this =android.widget.LinearLayout{bedfe33 V.E...... ......ID 0,0-1080,1920}time =680 ms
02-09 18:08:45.575 15827 15827 D View : [ANR Warning]onLayout time too long, this =DecorView@82e002d[HomePageAty]time =680 ms
频繁点击、频繁请求或其他快速频繁操作触发了onLayout ,同时onLayout 中做了耗时操作,导致anr
- 防抖动过滤,只响应第一笔事件
- 防抖动过滤,只响应最后一笔事件
- onLayout不做耗时操作,操作分解成多个异步小任务
View与ViewGroup layout 过程
这儿过程相比measure要简单一点,我们先从View 的layout()看起,ViewGroup的layout主要还是判断一些条件之后调用View 的layout()
View.java
public void layout(int l, int t, int r, int b) { if (DBG_SYSTRACE_LAY
在手动计算ListView高度时出现了以下错误:04-23 14:46:05.828: E/AndroidRuntime(3355): FATAL EXCEPTION: main
04-23 14:46:05.828: E/AndroidRuntime(3355): java.lang.NullPointerException
04-23 14:46:05.828: E/AndroidRuntim
为什么要进行性能优化?
随着项目版本的不断迭代,App的性能问题会逐渐的暴露出来,给用户带来一些卡顿、崩溃的体验。面对给和用户造成的不良效果,做出了性能优化,提升App整体性能,带用户带来良好的用户触感。
有哪些可以进行性能优化?
1.内存优化
内存泄漏是Androi...
1.本文不涉及Android vitals工具的使用,仅是介绍相关检测项目,摘录其中对于影响性能的代码的诊断和避免/解决方式并补充一些方法,如有错误,望指出~
2.持续更新~~
2019.04.20
Android vitals - Core Vitals部分
Android vitals
Android vitals是Google为提高Android设备稳定性和性能而采...
2015-07-2817:29:19
这一篇主要看看布局过程
一、布局过程肯定要不可避免的涉及到layout()和onLayout()方法,这两个方法都是定义在View.java中,源码如下:
1 /**
2 * Assign a size and position to a view and all of its
3 * descendants
...
1. 优化布局层级
2. 在onDraw的时候避免做耗时操作,同时尽量不要在ondraw中创建局部对象,onDraw频繁调用会产生大量的临时对象占用过多内存导致多次gc,降低性能;
2.内存方向
1. 内存泄漏相关可以参看我的其他博客内容
2. 内存溢出
1.如果内存泄漏过多,很多对象未被回收,导致内存占用太大,内存溢出;
2.大...