Pregunta

Tengo un problema. Para fines analíticos, necesito rastrear cuándo se reanuda la aplicación (no actividad). El problema que tengo ahora es que si pongo el rastreador en el evento Onresume de una actividad, se disparará cada vez que el usuario vaya y vaya en diferentes actividades.

¿Cómo puedo evitar eso? ¿Cómo puedo rastrear el verdadero "currículum de aplicación" (cuando el usuario realmente sale de la aplicación y regrese) y no el currículum de actividad?

Cualquier idea es muy apreciada. Gracias.

¿Fue útil?

Solución

Encontré el mismo problema y lo resolví creando actividad base:

public class mActivity extends Activity{

    public static final String TAG = "mActivity";

    public static int activities_num = 0;


    @Override
    protected void onStop() {
        super.onStop();
        activities_num--;
        if(activities_num == 0){
            Log.e(TAG,"user not longer in the application");
        }
    }


    @Override
    protected void onStart() {
        super.onStart();
        activities_num++;
    }
}

Todas las otras actividades en mi aplicación heredaron la mactividad. Cuando una actividad ya no es visible, la llamada. Cuando las actividades_num == 0, todas las actividades no son visibles (lo que significa que el usuario cierre la aplicación o pasó al fondo). Cuando el usuario comience la aplicación (o reiniciando desde el fondo) se llamará a la vanguardia (se llama a Onstart cuando la actividad es visible) y actividades_num> 0. Espera que ayude ...

Otros consejos

Use el objeto de aplicación de su aplicación (consulte http://developer.android.com/reference/android/app/application.html). Si crea una clase de aplicación personalizada y la configura en su archivo AndroidManifest.xml, puede hacer algo como esto:

  1. Comience a rastrear en el onCreate() del objeto de aplicación.
  2. Instrumentar todas sus actividades para que su onPause() y onResume() Métodos verifique con el objeto de aplicación y vea si son la primera actividad que se ejecuta, o si continúan una instancia previamente en ejecución de la aplicación.
  3. Deja de rastrear en el onDestroy() del objeto de aplicación.

Hasta cierto punto, la mayoría de los paquetes de análisis (Flurry y su tipo) hacen algo similar a esto. Tendrá que hacer un pequeño trabajo de máquina de estado para que esto funcione bien, pero no debería ser demasiado complicado.

En lugar de onresume (), conéctese en el evento OnCreate () de su actividad principal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top