¿Cómo reiniciar una aplicación completamente?

Tengo una aplicación que inicia un servicio remoto en su primera actividad iniciada. Luego, en otra actividad, el usuario puede configurar la configuración de la aplicación. Tenga en cuenta que esta segunda actividad no está vinculada al Servicio y no deseo vincularlo.

Ahora mi pregunta es: ¿cómo podría reiniciar toda la aplicación de la segunda actividad, después de cambiar la configuración?

Por ahora, estoy usando un botón que onClickListener es:

public void onClick(DialogInterface dialog, int which) { sauvegarde(); Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName()); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); } 

El problema es: sólo reinicia la actividad actual sin cerrar la aplicación completa y, por lo tanto, sin reiniciar el servicio

¿Algunas ideas?

Puedes usar el sistema AlarmManager de Androids como este:

Código para reiniciar la aplicación en tu actividad:

 AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, PendingIntent.getActivity(this.getBaseContext(), 0, new Intent(getIntent()), getIntent().getFlags())); System.exit(2); 

Un ejemplo puede ser buscado aquí

ACTUALIZAR

Como @CommonsWare señaló, es una mala manera de diseñar su aplicación, cuando usted tiene que reiniciarlo (mala práctica). Si realmente quieres hacerlo, puedes intentar establecer alarmmanager para iniciar tu aplicación en un segundo después de matar tu propio proceso:

 AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, PendingIntent.getActivity(this.getBaseContext(), 0, new Intent(getIntent()), getIntent().getFlags())); android.os.Process.killProcess(android.os.Process.myPid()); 

prueba esto

  public void reload() { Intent intent = getIntent(); overridePendingTransition(0, 0); intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); finish(); overridePendingTransition(0, 0); startActivity(intent); } 

Prueba este código,

 public void onClick(DialogInterface dialog, int which) { sauvegarde(); restart(2); } 

Método de reinicio

 public void restart(int delay) { Intent launchIntent = new Intent(context, YourStartUpActivity.class); PendingIntent intent = PendingIntent.getActivity(getApplicationContext(), 0, launchIntent , 0); AlarmManager manager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); manager.set(AlarmManager.RTC, System.currentTimeMillis() + delay, intent); System.exit(2); } 

In your restart activity añadir esto

 restart.this.finish(); getActivity(otheractivity.class).finish(); Intent in = new Intent(this,main.class); startActivity(in); 

Para cada actividad agregue getactivity (yourclassname) y finalice la actividad. Si agrega toda su actividad como esta su aplicación close & restart

Solución de AlarmManager no puede funcionar porque en la aplicación de matar todas las intenciones pendientes pueden ser eliminados. En android-10 tengo este problema.

Pero encontré otra manera – crear la clase Instrumentation y llamar startInstrumentation en Context . Funcionó muy bien.

Boolean android.content.Context.startInstrumentation (ComponentName className, String profileFile, Argumentos del paquete)

Comience a ejecutar una clase android.app.Instrumentation. El componente Instrumentation dado se ejecutará eliminando su aplicación de destino (si está en ejecución), iniciando el proceso de destino, instanciando el componente de instrumentación y dejándolo conducir la aplicación.

Esta función no es síncrona – vuelve tan pronto como la instrumentación ha comenzado y mientras está funcionando.

Normalmente, la instrumentación sólo se permite ejecutar contra un paquete que no está firmado o firmado con una firma con la que también se firma el paquete de instrumentación (garantizando que el objetivo confía en la instrumentación).

Instrumentation debe ser definida en el manifiesto. Google cómo usarlo.

  • NavUtils.navigateUpTo () no inician ninguna Actividad
  • ¿Cómo puedo hacer que mi botón se parezca más al botón de acción flotante de Android JellyBean (v21)?
  • Controlar el reinicio de la actividad de Android después de que un proceso se detiene
  • OnCreateView se llama varias veces / Trabajo con ActionBar y Fragmentos
  • ¿Cómo utilizar SQLite DB de AsyncTask?
  • ¿Se impide que se restaure la pila de actividades?
  • ListView OnItemClickListener con una nueva actividad
  • Estado de actividad mientras está en onActivityResult question
  • Mismo cajón de navegación en diferentes actividades
  • ¿Mostrar la actividad (diálogo del tema) arriba del Dialer en lockscreen?
  • Llamar a un método de fragmento desde una pestaña de actividad de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.