经常有人问我,作为刚毕业的要去面试,关于安卓开发的问题,技术面试官会经常问哪些问题呢?我想来想去不能一股脑的全写出来,我准备把这些问题单独拿出来写,并详细的分析一下,这样对于初学者是最有帮助的。这次的第一个问题就是:ListView的复用及如何优化!
1、ListView的复用简单来说就是使用ViewHolder复用convertView。说完大家尤其是初学者,没看过源码的同学不太明白。那我就举一个例子,让大家能够明明白白。
例子如下:
public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { convertView = mInflater.inflate(R.layout.lv_item, null); holder = new ViewHolder(); holder.textView = (TextView)convertView.findViewById(R.id.tv_text); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } holder.textView.setText(mData.get(position)); return convertView; } } public class ViewHolder { public TextView textView; }
2、如何进行优化呢?
①、如果item中有图片一定要用异步加载。而且里面的图片尽量要用缩略图或者小图。
②、判断手势,快速滑动时不加载里面的图片。
③、要对数据进行分页加载。
④、item的布局层级要越少越好。
3、如何检查呢?
可以使用hierarchview工具查看其优化。
什么是hierarchview?为什么要用它呢?
不合理的布局会使我们的应用程序UI性能变慢,HierarchyViewer能够可视化的角度直观地获得UI布局设计结构和各种属性的信息,帮助我们优化布局设计。HierarchyViewer是我们优化程序的工具之一,它是Android自带的非常有用的工具,可以帮助我们更好地检视和设计用户界面(UI),绝对是UI检视的利器。
怎么用它呢?
Hierarchy Viewer是随Android SDK发布的工具,位于Android SDK/tools/hierarchyviewer.bat (Windows操作系统,mac上显示的为hierarchyviewer),使用起来也是超级简单,通过此工具可以详细的理解当前界面的控件布局以及某个控件的属性(name、id、height等)。
1)连接设备真机或者模拟器。
2)启动你要观察的应用。
3)打开Hierarchyviewer,点击hierarchyviewer文件即可。
说到这里,我相信大家应该会对ListView的复用及优化有了一定的了解,如果在面试的过程中说出来,相信面试官应该会对你满意的!