在为listView充气视图时,最好是在.xml文件中没有android:text的所有textViews以及这会影响速度多少?那么ViewStubs会更快吗?
当使用8个没有android:text的textViews和使用android:text =“@ string / abc”膨胀LinearLayout时,这会改变什么吗? 请注意,我正在重复使用视图,因此可能只有10个被充气然后重复使用我不知道。
我正在使用中兴刀片进行开发,因此单个600Mhz CPU而不是四核......
答案 0 :(得分:8)
你可以尝试这个,不确定它是否会加速,但是试一试。
在后台线程中扩展布局。
View getView(int position, View convertView, ...) {
View v;
if (convertView == null) {
Start a background thread to inflate your linearLayout.
Pass item data and view 'v' to it.
v = inflate a simple dummy textview;
return v;
}
set normal stuff to convertview here.
return convertView ;
}
在后台主题中,
'v'
然后使视图v
无效。
v.postInvalidate();
答案 1 :(得分:3)
这在加快列表视图,尤其是View Holder位时非常有用:http://developer.android.com/training/improving-layouts/smooth-scrolling.html
我也有一台ZTE Blade,它们很慢,但运行良好的应用程序在“正常”手机上运行得非常棒:)
答案 2 :(得分:3)
如果您要替换textviews中的文本,那么您不应该在XML中填充它们。
在简单的列表视图中很有吸引力的性能杀手是嵌套的线性布局。通过一些工作,任何linearlayout树都可以用relativelayout替换。
确保你没有在if(convertView == null){block之外使用findViewById使用ViewHolder样式或只是在view.setTag中设置(R.id.resId,findViewById(R.id.resID) )
您在评论中提到您从asynctask返回时遇到延迟。确保在每次输入后没有重新加载表格。对数据源进行批量更新,然后重新加载表。