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.