studio programacion pantalla móviles libros desarrollo desarrollar curso bienvenida aprende aplicaciones android android-intent android-activity android-manifest back-stack

programacion - pantalla de bienvenida android studio



Cómo ejecutar una actividad solo una vez como la pantalla de bienvenida (5)

En mi aplicación, me gustaría ejecutar la pantalla de Splash una vez solo al principio, pero el problema es que ya coloqué en el Manifest esta línea: android:noHistory="true" que funciona muy bien si android:noHistory="true" botón Atrás y salgo de la aplicación pero tenga en cuenta que la aplicación todavía se está ejecutando en segundo plano, y cuando presiono el ícono de la aplicación vuelve a la pantalla de bienvenida y luego a la página de registro. Quería ser redirigido a la página de registro directamente cuando reabro mi aplicación.

¿Cómo hago esto? Gracias por cualquier sugerencia.


Así que esto es lo que hice, en mi SplashActivity (onCreate):

SharedPreferences settings = getSharedPreferences("prefs", 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("firstRun", true); editor.commit(); Intent intent = new Intent(this, RegistrationActivity.class); startActivity(intent);

SplashActivity (onResume):

@Override public void onResume() { super.onResume(); SharedPreferences settings = getSharedPreferences("prefs", 0); boolean firstRun = settings.getBoolean("firstRun", true); if (!firstRun) { Intent intent = new Intent(this, RegistrationActivity.class); startActivity(intent); Log.d("TAG1", "firstRun(false): " + Boolean.valueOf(firstRun).toString()); } else { Log.d("TAG1", "firstRun(true): " + Boolean.valueOf(firstRun).toString()); } }

En mi RegistrationActivity (onCreate):

SharedPreferences settings = getSharedPreferences("prefs", 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("firstRun", false); editor.commit(); boolean firstRun = settings.getBoolean("firstRun", true); Log.d("TAG1", "firstRun: " + Boolean.valueOf(firstRun).toString());

Y luego deshabilita el botón Atrás para evitar volver a menos que el usuario presione Inicio:

@Override public void onBackPressed() { }

¡Muchas gracias a los que contribuyeron!


Para profundizar sobre la mención de "preferencias compartidas", creo que lo siguiente funcionaría si lo insertara en Crear () de su actividad principal:

SharedPreferences settings = this.getSharedPreferences("appInfo", 0); boolean firstTime = settings.getBoolean("first_time", true); if (firstTime) { SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("first_time", false); editor.commit(); }

Después de que se ejecuta el bloque, "firstTime" debe indicar si es la primera vez que se ejecuta la aplicación. "appInfo" es solo un nombre de marcador de posición para lo que quiera que se llame al archivo de preferencias, creo.


¡Así es como lo logré! ¡Espero que ayude!

import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; public class check extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); SharedPreferences settings=getSharedPreferences("prefs",0); boolean firstRun=settings.getBoolean("firstRun",false); if(firstRun==false)//if running for first time //Splash will load for first time { SharedPreferences.Editor editor=settings.edit(); editor.putBoolean("firstRun",true); editor.commit(); Intent i=new Intent(check.this,Splash.class); startActivity(i); finish(); } else { Intent a=new Intent(check.this,Main.class); startActivity(a); finish(); } } }


La forma más simple es que puedes usar android: noHistory = "true" en tu archivo de manifiesto.


Puede usar las Preferencias compartidas para guardar algunos booleanos cuando ejecuta su aplicación en el primer lanzamiento y luego verificar ese valor en cada inicio si sale y luego iniciar directamente la Actividad de registro.

Aunque este enfoque de solo guardar un valor normal tiene un agujero en el bucle donde, supongamos que tu aplicación está instalada en un dispositivo de usuario y el usuario acaba de actualizar la aplicación con una nueva versión sin desinstalar la primera, entonces en ese caso tampoco verás el Splash ya que las antiguas preferencias compartidas ya estarán allí con ese viejo valor guardado.

Entonces, en ese caso, necesita cambiar la lógica poco guardando la versión de la aplicación y verificando la versión de la aplicación en cada lanzamiento de esa manera, podrá generar una experiencia de usuario real.

Echa un vistazo a esto: ¿Cómo crear una pantalla de bienvenida de una sola vez con las preferencias de Android?