ProcessLifecycleOwner juzga el cambio frontal y posterior de la aplicación de Android

Aplicación de Android en este momento en 2019

He usado un método para cambiar entre la parte frontal y posterior de la aplicación de Android. El método es llamar a registerActivityLifecycleCallbacks en la clase Application, y luego usar una variable global para contar, aumentar el contador en onActivityStarted () y disminuir el contador en el método onActivityStopped. Uno. Y juzgue el valor del contador en los métodos onActivityStarted y onActivityStopped respectivamente. Si el valor del contador en onActivityStarted es 0, se demuestra que ingresa al primer plano desde el fondo, y si el contador en onActivityStopped es igual a 0, se demuestra que ingrese el fondo desde el primer plano.

La parte principal del código es la siguiente:

registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
              
            }

            @Override
            public void onActivityStarted(Activity activity) {
                if (sForegroundCount == 0) {
                    // 进入foreground
               
                }
                sForegroundCount++;

          
            }

            @Override
            public void onActivityResumed(Activity activity) {
         
            }

            @Override
            public void onActivityPaused(Activity activity) {
              
            }

            @Override
            public void onActivityStopped(Activity activity) {
                sForegroundCount--;
                if (sForegroundCount == 0) {
                    // 进入background

                 
                }

            }

            @Override
            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

            }

            @Override
            public void onActivityDestroyed(Activity activity) {
         
            }
        });

De hecho, esto es posible para lograr el objetivo, pero para ser honesto, la forma de lograrlo es muy incómoda.

La aparición de ProcessLifecycleOwner supera este problema de una sola vez, haciendo que la conmutación de front-end y back-end del programa de monitoreo sea elegante. Esta clase es una clase en el marco de ciclo de vida de Google. Utilice la necesidad de presentar

    implementation 'android.arch.lifecycle:extensions:1.1.1'
    implementation 'android.arch.lifecycle:runtime:1.1.1'

Es muy simple de usar:

Primero defina una clase que implemente la interfaz LifecyclerObserver:

public class LifecyclerChecker implements LifecycleObserver

Luego agregue el siguiente código a esta clase:

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    private void onAppBackground() {
        // 应用进入后台
        Log.e("test","LifecycleChecker onAppBackground ON_STOP");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    private void onAppForeground() {
        // 应用进入前台
        Log.e("test","LifecycleChecker onAppForeground ON_START");

    }

Por supuesto, los nombres de los métodos anteriores son arbitrarios. Lo importante es anotar @OnLifecycleEvent (Lifecycle.Event.ON_STOP) y @OnLifecycleEvent (Lifecycle.Event.ON_START). El primero significa que la aplicación entra en segundo plano y el segundo uno significa que la aplicación pasa a primer plano.

Finalmente, llame al siguiente método en el lugar apropiado:

      ProcessLifecycleOwner.get().getLifecycle().addObserver(new LifecycleChecker());

El siguiente método se puede llamar en el onCreate de la Aplicación o en el onCreate de la Actividad u otras funciones del ciclo de vida. Puedes llamarlo donde quieras.

Siempre que se llame al código anterior, puede volver a llamar al método correspondiente cuando la aplicación esté cambiando entre el frente y el reverso.

Supongo que te gusta

Origin blog.csdn.net/awy1988/article/details/99431616
Recomendado
Clasificación