Reinicie una aplicación para Android completa una vez que haya finalizado AsyncTask
La aplicación que estoy codificando comprueba si hay un archivo ZIP especial en un directorio en / sdcard y empieza a descargarlo y descomprimirlo si no. La descarga y descomprimir funciona finde, incluso con subdirectorios. Pero tengo que reiniciar la aplicación cuando se hace – y eso no funciona.
Al principio tengo una actividad especial "PreMainActivity.java" sólo para reiniciar propósito:
- Android Reiniciar la aplicación
- Reinicio condicional en Activity onConfigurationChanged
- Android AlarmManager después de reiniciar
- Flex Mobile, ¿cómo reiniciar una aplicación de Android?
- Iniciar AlarmManager si se reinicia el dispositivo
import android.app.Activity; import android.content.Intent; import android.os.Bundle; public class PreMainActivity extends Activity { /** * */ public static Boolean ENABLE_RESTART = false; @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); PreMainActivity.ENABLE_RESTART = true; restartMain(); } @Override public void onRestart() { super.onRestart(); restartMain(); } /** * */ public void restartMain() { if (PreMainActivity.ENABLE_RESTART == true) { final Intent mainIntent = new Intent(this, MainActivity.class); mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(mainIntent); finish(); } else { finish(); } PreMainActivity.ENABLE_RESTART = false; } }
Entonces tengo algún código dentro del archivo DownloadFile.java
@Override protected void onPostExecute(final String result) { MainActivity.mProgressDialogDownload.dismiss(); PreMainActivity.ENABLE_RESTART = true; final Intent i = new Intent(MainActivity.this, PreMainActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(i); }
Por lo que he investigado tengo que pasar el contexto de mi MainActivity a la DownloadFile.java – pero todavía no tengo ni idea de cómo. ¿Puede alguien gibe me una pista de cómo pasar el contexto a un AsyncTask en un archivo separado dentro del mismo paquete? ¿O cualquier otra sugerencia de cómo reiniciar la aplicación completa después de que una AsyncTask ha terminado?
- ¿El botón de retroceso de Android no reinicia la actividad?
- Reinicio del teléfono Android cuando se ejecuta la aplicación desde eclipse
- La aplicación de Android se reinicia al abrirla haciendo clic en el icono de la aplicación.
- ¿Cómo implementar un reinicio de MediaPlayer en errores en Android?
- Cómo reiniciar la función onCreate
- OnCreate vs. onResume / onRestart bevhaviour con respecto a las variables miembro
- ¿Cómo reinicio una actividad en android?
Necesitará crear un constructor de AsyncTask para pasar Contexto de actividad actual como:
public Context ctx; public Your_AsyncTask_Class_Name (Context context){ super(); this.ctx=context; } ...... @Override protected void onPostExecute(final String result) { MainActivity.mProgressDialogDownload.dismiss(); PreMainActivity.ENABLE_RESTART = true; final Intent i = new Intent(ctx, PreMainActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(i); }
Y de la actividad usted puede pasar el contexto como:
AsyncTask_Class_Name asyktaskobj=new AsyncTask_Class_Name(this); asyktaskobj.execute();
Sólo reinicie su main.activity como este:
Intent intent = getIntent(); finish(); startActivity(intent);
Ver pregunta: ¿Cómo puedo reiniciar una actividad de Android?