Tengo un servicio que obtiene algunos datos de la web y actualiza una lista que está "almacenada" en la aplicación.Práctica recomendada: actualice ArrayAdapter continuamente
Por lo tanto, puedo acceder desde la actividad principal y usarla para mi ArrayAdapter.
Cuando actualizo los datos, se cambia el elemento al que se hace referencia de la lista.
Mi pregunta es, ¿cuál es la mejor práctica para actualizar los datos en el adaptador en la actividad principal?
Tengo dos soluciones en mente, pero no sé si son correctas de esa manera. ¡Además de eso, me gustaría implementar una versión que no esté usando mucha batería!
Primero: Tema que se llama cada segundo, actualizar el adaptador con notifyDataSetChanged():
private void startListUpdateThread()
{
Thread ListManageThread = new Thread() {
LinkItem listItem;
public void run() {
Log.d("DL", "List Update - start");
while(true)
{
runOnUiThread(UpdateGUIList);
try {
Thread.sleep(1000); //5Sekunden!
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e("DL", "ERROR: InterruptedException - " + e.getMessage());
}
}
}
};
ListManageThread.start();
}
private Runnable UpdateGUIList = new Runnable() {
@Override
public void run() {
mFileAdapter.notifyDataSetChanged();
}
};
Segundo: El uso de un puesto de Manejador de retraso manejador Handler final privado = new Handler();
private void startListUpdate()
{
handler.removeCallbacks(UpdateListUI);
handler.postDelayed(UpdateListUI, 1000); // 1 second
}
private Runnable UpdateListUI = new Runnable() {
public void run() {
//Remove Elements first
removeDeletedItemsFromList();
//Update Adapter
mFileAdapter.notifyDataSetChanged();
handler.postDelayed(this, 1500); // 1,5 seconds
}
};
Entonces, ¿cuál es la mejor manera de hacerlo? ¡Quizás también haya otra forma de hacerlo, pero de la que no había pensado antes!
Corrígeme si me equivoco, pero desde mi punto de vista, la tarea asíncrona es responsable de una tarea que se está ejecutando en breve y necesita una actualización _durante_ o _después_ de que la tarea haya finalizado. – Webchen