Android: obtención de datos XML desde la Web (con AsyncTask) y problema relacionado con Progressbar
Estoy buscando un XML de datos de la web utilizando HTTP GET / POST. Ahora mismo lo he hecho de manera sencilla (es decir, sin threaed).
De acuerdo con el siguiente enlace, he intentado implementarlo con el diálogo de barra de progreso con Thread http://www.ceveni.com/2009/09/sample-progress-bar-dialog-in-android.html
- Cómo personalizar una barra de progreso en Android
- Cómo crear una barra de progreso circular (gráfico circular) como indicador - Android
- Android ProgressBar no se actualiza onProgress
- Barra de progreso de Android con relleno
- Uso práctico de ContentLoadingProgressBar
¿Pero cómo puedo llegar a saber sobre el tiempo de terminar de buscar XML desde la web (es decir, lo que debería ser el tiempo de sueño y también cuando descartar el cuadro de diálogo barra de progreso )
Permítanme aclarar más sobre mi problema => En la actividad, cuando el usuario haga clic en el botón "Obtener datos", el cuadro de diálogo "Barra de progreso" debe aparecer y debería desaparecer sólo cuando la búsqueda se haya completado correctamente.
Creo que esto se puede hacer con " AsyncTask ", pero no saben cómo utilizar ese concepto para este problema.
Entonces, ¿cómo lo hago?
- Warcraft ProgressBar en el diseño de Android
- Hacer barra de progreso dentro del botón
- Cambiar el comportamiento indeterminado de ProgressBar.Horizontal
- Cómo crear ProgressBar circular en android?
- Quite el relleno vertical de ProgressBar horizontal
- ¿Cómo crear una barra de progreso de carga horizontal?
- Cómo acceder a la carpeta de descargas en android?
- ¿Cómo hacer que ProgressBar deje de girar?
public void onClick() { new FetchTask(context).execute(null); } public class FetchTask extends AsyncTask<Object, Object, Object > { private ProgressDialog dlg; private Context ctx; public FetchTask(Context context) { ctx = context; } @Override protected void onPreExecute() { dlg = new ProgressDialog(ctx); dlg.setMessage("Loading...."); super.onPreExecute(); } @Override protected void onPostExecute(Object result) { dlg.dismiss(); if ( result instanceof Exception ) { // show error message } else { // display data } super.onPostExecute(result); } @Override protected Object doInBackground(Object... params) { try { // String rawData = doPost("yourUrl"); // XMLTree data = yourParser.parse(rawData); // return data; } catch ( Exception e ) { return e; } } }
Usted tiene razón, ASyncTask
es lo que está buscando. Algunos puntos para comenzar:
- http://developer.android.com/resources/articles/painless-threading.html
- http://developer.android.com/reference/android/os/AsyncTask.html (supongo que sabes que: D)
- Algunos tutoriales cortos: http://androidpartaker.wordpress.com/2010/08/01/android-async-task/
- ¿Hay alguna manera de reemplazar el estándar Iniciar sesión en Android?
- CKEditor 4.4.7 no aparece en ningún navegador móvil