2011-03-31 12 views
5

Estoy rastreando cuántas actividades están actualmente visibles en mi aplicación (que debería ser 0 o 1) llamando a plusActivity() de cada actividad on Resume() y minusActivity() desde onPause()Comprobación simple para fondo de aplicación Android

más/menosLa actividad se encuentra en mi clase myApplication, que amplía la Aplicación.

Los métodos incrementan y decrementan un contador. Cada vez que se llama a minusActivity(), también publica un runnable que se ejecuta después de 2 segundos. Cuando el ejecutable se ejecuta, si otra actividad no se ha abierto después de que el último se cerró hace 2 segundos (por ejemplo, foregroundedActivities == 0 porque nada llamó a plusActivity() en 2 segundos), llama a un método para hacer algunas cosas que deben suceder cuando está en segundo plano.

He aquí un fragmento:

public void plusActivity(){ 
    foregroundedActivities++; 
} 

public void minusActivity(){ 
    foregroundedActivities--; 
    timingHandler.removeCallbacks(checkBackgroundTask); 
    timingHandler.postDelayed(checkBackgroundTask, 2000); 
} 

public void checkIfBackgrounded(){ 
    if(foregroundedActivities==0){ 
     doWhateverWeDoWhenBackgrounded(); 
    } 
} 

public Runnable checkBackgroundTask=new Runnable(){ 

    @Override 
    public void run() { 
     checkIfBackgrounded(); 
    } 

}; 

Dada la 2-segundo período de tiempo este proceso opera, y que no hay devoluciones de llamada a una actividad están involucrados, es decir que una forma aceptable para llevar a cabo la detección de fondo, o es lo que realmente necesita hacer todo esto con un servicio? Parece que hay muchos gastos generales y no veo ningún beneficio, ya que parece funcionar bien.

Respuesta

1

Su solución podría funcionar, pero no sé.

Es posible que pueda utilizar un BroadcastReceiver. Si usa BroadcastReceiver, puede emitir un Intento cuando una actividad se ejecuta en Pausa() junto con su código más/menos. El BroadcastReceiver podrá ejecutar su aplicación nuevamente ...

Cuestiones relacionadas