我有一个包含 200 个项目的 ListView 。我为每一行使用自定义 View 。有一个代码需要一些时间来计算,因此列表在滚动时挂起并且加载缓慢(2-3 秒)。
我已将 SimpleCursorAdapter 子类化,并使用 Filterable 和 SectionIndexer。
我打算首先显示记录的名称,然后将计算放入一个线程中,然后在完成后显示。
我如何推迟一些工作,然后更新 ListView 以包含计算数据?这应该在没有用户交互的情况下即时显示。
最佳答案
由于 android 的 Android UI 是单线程的,因此每当您执行长时间操作时它都会被阻塞。
您可以执行常规的 Java 线程处理,并在主 UI 类中有一个 Handler(),您可以将信息反馈到其中。但是..
最简单的方法是创建一个 AsyncTask()。它们是略有变化的 java 线程。他们可以在主计算之前/之后执行 UI 操作。例如:
private class AndroidThread extends AsyncTask {
protected Object doInBackground(Object... params) {
return result;
}
protected void onPostExecute(Object result) {
// do things here with the result of the doInBackground function
// Like: "UiElement"."performTask(result)"
}
}
有关 AsyncTask 的更多信息 see this
关于android - 如何为 Listviews 安排繁重的工作以便稍后显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2527311/