Inicie la aplicación de Android con actividad específica

Cuando una aplicación se inicia o se reanuda, me gustaría redirigir al usuario a una "Actividad" específica basada en una variable establecida en "SharedPrefences".

Para ello, estaba considerando tener un método que comprueba la variable de estado de SharedPreferences y redirige a la actividad correcta:

private void launchRedirect(Context ctxt) { Integer status = AppPreferences.getStatus(this); Intent i = new Intent(MainActivity.this, Activity1.class); switch (status) { case 0: i = new Intent(MainActivity.this, Activity2.class); case 1: i = new Intent(MainActivity.this, Activity3.class); case 2: i = new Intent(MainActivity.this, Activity4.class); case 3: i = new Intent(MainActivity.this, Activity5.class); } startActivity(i); } 

Y entonces podría llamar a este método en cada método 'onResume' para cada actividad de mi aplicación:

  public void onResume(Bundle savedInstanceState) { launchRedirect(this); } 

Esto significaría que el usuario no puede volver técnicamente a la última Actividad, porque cuando lo llaman, llama a Resume, y será redirigido al estado que corresponde con el usuario actual.

Supongo que esto podría conducir a algunos errores circulares sin embargo – ¿hay una mejor manera de hacer esto?

Creo que es una forma normal de hacerlo, excepto que también puede agregar el método call of finish (), si necesita que MainActivity se cierre en esta situación.

Además, no olvide las declaraciones de ruptura:

 private void launchRedirect(Context ctxt) { Integer status = AppPreferences.getStatus(this); Intent i = new Intent(MainActivity.this, Activity1.class); switch (status) { case 0: i = new Intent(MainActivity.this, Activity2.class); break; case 1: i = new Intent(MainActivity.this, Activity3.class); break; case 2: i = new Intent(MainActivity.this, Activity4.class); break; case 3: i = new Intent(MainActivity.this, Activity5.class); break; } startActivity(i); if (/* check if MainActivity should be closed */) { finish(); } } 

Por favor, asegúrese de que está actualizando el valor de preferencia según su activtiy de navegación. Eso ahorrará sus cheques innecesarios para el lanzamiento de la actividad.

  • Android - Almacenamiento / recuperación de cadenas con preferencias compartidas
  • SharedPreferences en iOS 4
  • Uso de SharedPreferences con diferentes contextos
  • ¿Es buena idea usar las preferencias compartidas de Android para almacenar grandes cantidades de datos?
  • En preferencias compartidas, cómo almacenar array de cadena en la aplicación android
  • Escribir la clave pública / privada en SharedPreferences y usarla
  • ¿Cuándo usar getSharedPreferences vs savedInstanceState?
  • Cómo burlar una SharedPreferences usando Mockito
  • Android: guarda Object to SharedPreferences y lo consigue en cualquier lugar de la aplicación.
  • Android se niega a escribir / crear archivos de preferencias compartidas
  • Android Menu sólo funciona una vez por ejecución de aplicación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.