网友通过本文主要向大家介绍了android开发listview,android开发优化,android开发性能优化,android开发内存优化,android开发 json解析等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
Android开发:优化ListView实践解析
在看了一些vogella的文章之后,发现关于android listview性能优化这一段很有意思,于是实践了一下,经过优化,性能确实提升不少!
先看看优化前和优化后的比较:
优化前的log截图:
优化后的log截图:
并且,在不停滚动ListView的过程中,优化之前会出现ANR现象,在AVD上特别容易复现:
然后,优化后显得很流畅,附上对于的log截图:
下面附上相关代码分析:
ListView中的每一个Item由一个ImageView 和一个TextView组成
Layout:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="horizontal" >
- <ImageView android:id="@+id/imageView"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent" />"
- <TextView android:id="@+id/textView"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:layout_marginLeft="15dp"
- android:gravity="center_vertical" />
- </LinearLayout>
Activity继承自ListActivity,我故意增加了Item,方便测试,效果更明显:
- public class ListViewDemo extends ListActivity{
- private final String[] mItems = new String[] { "Android", "iPhone",
- "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7",
- "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X",
- "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2",
- "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu",
- "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7",
- "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X",
- "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2",
- "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu",
- "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7",
- "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X",
- "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2",
- "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu",
- "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7",
- "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X",
- "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2",
- "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu",
- "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7",
- "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X",
- "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2",
- "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu",
- "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7",
- "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X",
- "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2",
- "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu",
- "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7",
- "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X",
- "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2" };
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- ListViewArrayAdapter adapter = new ListViewArrayAdapter(this, mItems);
- getListView().setAdapter(adapter);
- }
- }
然后custom Adapter,优化之前的adapter:
- @Override
- &