From 6cc9d3432cb8b0245dbd3566d67edc8f3fea8825 Mon Sep 17 00:00:00 2001 From: checkming Date: Wed, 17 May 2017 20:04:24 +0800 Subject: [PATCH] =?UTF-8?q?Update=20Android=E6=80=A7=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...346\200\247\350\203\275\344\274\230\345\214\226.md" | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git "a/Part1/Android/Android\346\200\247\350\203\275\344\274\230\345\214\226.md" "b/Part1/Android/Android\346\200\247\350\203\275\344\274\230\345\214\226.md" index 2945c5f..4d16848 100644 --- "a/Part1/Android/Android\346\200\247\350\203\275\344\274\230\345\214\226.md" +++ "b/Part1/Android/Android\346\200\247\350\203\275\344\274\230\345\214\226.md" @@ -145,6 +145,16 @@ Tips:如果我们要在标签中覆写layout属性,必须要将layout 举例:比如在LinearLayout里边使用一个布局。里边又有一个LinearLayout,那么其实就存在了多余的布局嵌套,使用merge可以解决这个问题。 +###利用视图复用机制 + +listView的item比较大,高度不固定时会出现一个问题: + +当前几个item高度比较高,2个item就占满了整个屏幕,listView由于内部的视图复用机制,会生成2个item的实例,继续往后滑动后面的item比较短,1个页面可以容纳10个,这时往后滑动,listView就会继续实例化8个item,导致初次滑动顿卡,但是初次滑动完成后,后面就不会再实例化了也就很流畅了。 +解决措施: + 实例化一个item就很卡,那说明这个item的layout文件写的有问题,是不是里面的View层次太多或者是View的数量众多。如果View层次较深,可以对linearlayout多用Relativelayout替换,减少嵌套层次;如果是View数量太多,看看怎么减少view的数量。还有getView方法里的逻辑是不是太复杂,把里面能够精简的东西尽量简化,去掉不必要的循环逻辑,加快getView的执行速度。 +        如果是业务方面的话,那就要靠自己思考怎么更好优化业务逻辑了。如果的item是因为数据有不同的类型展示不同的数据,不是某种类型就隐藏它对应的view,那么建议lz使用getViewTypeCount, ViewType把item拆开。 + + ###仅在需要时才加载布局 某个布局当中的元素不是一起显示出来的,普通情况下只显示部分常用的元素,而那些不常用的元素只有在用户进行特定操作时才会显示出来。