如何安排繁重的工作以便以后显示Listviews?

Pen*_*m10 5 multithreading android listview cursor

我有一个包含200个项目的列表视图.我为每一行使用自定义视图.有一段代码需要一些时间来计算,因此列表会在滚动时挂起并以慢速(2-3秒)加载.

我已经将SimpleCursorAdapter子类化,并使用Filterable和SectionIndexer.

我想到的是最初显示记录的名称,并在计算中放入一个线程,并在稍后完成时显示.

如何推迟一些工作,稍后更新列表视图以包含计算数据?这应该在没有用户交互的情况下即时显示.

Rob*_*oss 2

由于 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)"
      }
 }
Run Code Online (Sandbox Code Playgroud)

有关 AsyncTask 的更多信息,请参阅此