Visualización del diálogo de progreso antes de iniciar una nueva actividad

Tengo una actividad 'Actividad1' y otra actividad llamada 'Actividad2'. La 'Actividad2' se carga al hacer clic en un botón en 'Actividad1'. Quería mostrar el diálogo de progreso hasta que se carga la nueva actividad. ¿Puedes mostrarme el código para hacer esto?

Hay dos maneras de

Primer enfoque Para utilizar Async Task

Si está realizando tareas pesadas, por ejemplo, cargando datos desde un servidor o analizando xml, utilice AsynTask <> si desea llamar a ActivityB desde ActivityA entonces

* Step -1 * crear una clase AsyncTask. Escribir todas las tareas de fondo dentro del método doBackground() y después de la finalización de la tarea que desea llamar a una actividad que el código escribe dentro onPostExecute() post ejecutar método

 import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.view.View; public class LoadingDataFromServer extends AsyncTask { Context currentContext = null; boolean isCancelled = false; public LoadingDataFromServer(Context context) { currentContext = context; } @Override protected void onPreExecute() { if (DashboardActivity.progressBarLayout != null) { DashboardActivity.progressBarLayout.setVisibility(View.VISIBLE); // Log.i(TAG,".....Now make progress bar visible....."); } super.onPreExecute(); } @Override protected Object doInBackground(Object... params) { // do background processing try { // do background tasks eg sever communication } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object result) { // TODO Auto-generated method stub // progressDialog.dismiss(); // call second Activity Intent i = new Intent(currentContext, com.ActvityB.class); super.onPostExecute(result); } @Override protected void onCancelled() { // TODO Auto-generated method stub isCancelled = true; super.onCancelled(); } } 

Step-2 En la actividad de donde desea saltar a una nueva actividad (por ejemplo, en ActivityA), llame al execute () de AsynTask

 new LoadingDataFromServer(context).execute(null); 

Segundo enfoque

  • Primer cuadro de diálogo de progreso.
  • Crear un hilo para hacer todas las tareas de fondo. Cuando el hilo finaliza la tarea y luego cancela el diálogo de progreso y llama a la siguiente actividad

o

  • Cuando el hilo complete la tarea, entonces llame a la actividad siguiente pase este objeto (cuadro de diálogo de progreso) y dentro de esa nueva actividad deseche este diálogo.

Visualice el diálogo de progreso en el método onCreate de onCreate y luego haga todo el tiempo de carga en un AsyncTask. En el método onPostExecute() de onPostExecute() , descarte el diálogo de progreso.

Sí usando AsynTask <> puede obtener su resultado

En OnPreExecute Muestra tu diálogo Progress, en OndoInBackground ejecuta tu actividad, en onPostExecute elimina tu diálogo

Obtener la idea Get Concept

Las otras respuestas (usando AsynTask) son correctas, pero la pregunta que usted necesita para averiguar es lo que está causando su retraso. ¿Sucede algo en el extremo posterior de la Actividad1 o algo que sucede en la parte frontal de la Actividad2? Si estás realizando algún procesamiento antes de iniciar Actividad2, sigue los consejos de Last Warrior o Ted Hopp … si tienes un proceso de carga prolongado en Activity2, tendrás que iniciar el diálogo de progreso como lo primero que sucede enCreate of Actividad2 y luego mover lo que está tomando los recursos de procesamiento en un AsynTask (o sólo otro hilo) allí.

Supongo que en el improbable caso de que A1 y A2 requieran tiempo extra en el extremo y el frente de cada uno respectivamente, tendrá que abrir y cerrar un diálogo de progreso … No creo que haya una forma de mantener una abierta En el primer plano a medida que se mueve de una actividad a la otra.

Usted puede hacerlo a través de AsyncTAsk. ¿Qué código toma tiempo para ejecutar simplemente poner eso en

DoInBackground ()

El método override de asyncTask y

StartActivity (intención) —- acaba de poner en onPostExcute ()

  protected class InitTask extends AsyncTask<Context, Integer, Integer> { @Override protected Integer onPreExcute( Context... params ) { //assign progressbar here } @Override protected Integer doInBackground( Context... params ) { //do all the stuffs here return super.doInBackground( params ) } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); //update progress bar } @Override protected void onPostExecute( Integer result ) { super.onPostExecute(result); //start activity here } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.