app_launch_checker

Android Support Library (I) – AppLaunchChecker

A principios de abril, el equipo de desarrollo de Google lanzó la nueva versión de su librería de soporte, la versión 23.3.0 . En esta versión se han solucionado una gran cantidad de bugs. Podéis ver los cambios AQUÍ.

Esta entrada no es para comentar los bugs, sino para hablar de un nuevo elemento que han implementado. AppLaunchChecker

¿Qué es AppLaunchChecker?

Esta clase ofrece la posibilidad de saber si la aplicación se ha ejecutado alguna vez. Para ello solo se necesita inicializar la clase en el método onCreate(Bundle savedInstanceState) de nuestra actividad principal, y preguntar, donde queramos, si la aplicación ha sido lanzada alguna vez.

¿Cómo funciona realmente AppLaunchChecker?

AppLaunchChecker es un simple gestor de shared preferences, el cual ofrece dos métodos públicos. El primero es onActivityCreate(Activity activity) , que es el inicializa la clase. Lo primero que realiza es comprobar el valor actual de la preferencia, y si ya está inicializada no sigue. Por el contrario, si la variable no tiene valor, pondrá la preferencia a true si la actividad es ACTION_MAIN y además tiene alguno de los flags CATEGORY_LAUNCHER o CATEGORY_LEANBACK_LAUNCHER.

El método hasStartedFromLauncher(Context context) lo único que realiza es devolver el valor de la preferencia.

Una vez se ejecute por primera ver el onActivityCreate(Activity activity), el métodohasStartedFromLauncher(Context context) siempre nos devolverá true, por lo que si queremos ver si es la primera vez que se ejecuta, deberemos ejecutar las llamadas a los métodos en el orden correcto.

¿Para que me sirve en mis aplicaciones?

Muchos desarrolladores de aplicaciones necesitan al inicio de la aplicación recuperar algunos datos de un servidor, o inicializar ciertos aspectos (ya sea configuraciones personalizadas, como propias,..). Antes se hacia la misma comprobación (Si no es la misma, muy parecida). Se creaba una preferencia que indicaba si ya se había inicializado la aplicación.

 

Ejemplo práctico

public class MainActivity extends AppCompatActivity {

    private TextView tvAppState;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        tvAppState = (TextView) findViewById( R.id.tv_app_state );

        if( AppLaunchChecker.hasStartedFromLauncher(this) ){

            tvAppState.setText("Application has been launched at least once");

        }else{

            tvAppState.setText("Application has never been started");

        }
        AppLaunchChecker.onActivityCreate( this );

    }
    
}

 

Puedes ver el ejemplo AQUI


Deja un comentario

9 − Ocho =