我是Xamarin.Android的新手,我制作了一个非常简单的应用程序,并将其与用Java开发的相同应用程序进行了比较,得到了我无法相信的结果。
此应用程序正在执行的所有操作是在按钮单击时使用10000个项目填充ListView。
C#代码:
private void Button_Click(object sender, System.EventArgs e)
{
var list = new List<String>();
for (int i = 0; i < 10000; i++)
list.Add(i.ToString());
var adapter =
new ArrayAdapter<String(this,Android.Resource.Layout.SimpleListItem1, list);
listView.Adapter = adapter;
}
Java代码:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final ArrayList<String> list = new ArrayList<>();
for(int i = 0; i < 100000; i++)
list.add(Integer.toString(i));
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, list);
listView.setAdapter(adapter);
}
});
我测量了性能,结果如下: Xamarin.Android:约。 950毫秒 Java:小于1毫秒
如何以及为何?我做错了什么?
我认为在Java中并非所有项目都在同一时间填充,但在Xamarin.Android中,如果是这样的话,我该如何避免它并使ListView填充更快?
答案 0 :(得分:0)
Xamarin.Android:约。 950毫秒Java:小于1毫秒。
当您使用new ArrayAdapter(..)
方法填充ListView
时,如果只填充少量数据(少于约100),则Xamarin.Android
和{{1}之间几乎没有差异}}。随着数据的增加,Java
的性能几乎没有变化,但在Java
中,加载时间的花费时间与数据量成正比。
在我的Android版M6中,当我使用100,000个数据填充Xamarin.Android
时,ListView
:约。 4200毫秒,Xamarin.Android
:约。 42毫秒。
如果是这种情况,我该如何避免它并使ListView填充更快?
为了获得更好的效果,您可以创建custom Adapter来填充Java
。如果要填充大量数据,建议使用RecyclerView。我在我的设备中使用它来填充100,000个数据,它们都在ListView
中具有良好的性能:约。 200毫秒。