Потоки и кэширование, вероятно, хорошие идеи. Если в вашем списке всего десять человек (10 кбайт памяти, 20 кбайт), рассмотрите возможность использования кэшированного списка для пользовательского интерфейса и обновляйте его после каждой загрузки. Для этого проверьте класс AsyncTask, который был представлен в Android 1.5. Простой пример кода может выглядеть примерно так:
mCachedList;
private void onUpdate(Location location) {
DownloadTask refresh = new DownloadTask(location);
refresh.execute();
}
private class DownloadTask extends AsyncTask<Location, void, ArrayList<ListItem> {
protected ArrayList<ListItem> doInBackground(Location... params) {
final ArrayList<ListItem> refreshlist = new ArrayList<ListItem>;
Location location = params[0];
sendToCloud(location);
while(!done) {
ListItem next = downLoadPerson();
refreshlist.add(next);
}
return refreshlist;
}
protected void onPostExecute(ArrayList<ListItem> refreshlist) {
mCachedList = refreshlist;
}
}
Используйте кэшированный список для пользовательского интерфейса, пока фоновая задача не завершится и не обновится. Есть более продвинутые вещи, которые вы могли бы сделать, чтобы сэкономить больше памяти, такие как повторное использование списка обновлений и т. Д., Но я надеюсь, что выше приведены некоторые сведения о том, как сделать это в фоновом режиме. Также не забывайте повторно использовать конвертируемое представление в вашем списке, чтобы избежать большого количества сбора мусора для каждого элемента при прокрутке списка.