我正在通過從每個Activity的onResume()和來自onPause()的minusActivity()調用plusActivity()來跟蹤當前在我的應用程序(應該是0或1)中可見的活動數Android應用程序背景的簡單檢查
plus/minusActivity在myApplication類中,它擴展了Application。
該方法遞增和遞減一個計數器。每次調用minusActivity()時,它都會發佈一個在2秒後運行的runnable。當runnable執行時,如果另一個活動在2秒前關閉的最後一個活動之後未打開(例如foregroundedActivities == 0,因爲沒有在2秒內調用plusActivity()),那麼它調用一個方法來做一些需要發生的事情當背景時。
這裏有一個片段:
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();
}
};
鑑於此過程中工作在2秒的時間內,這一個活動沒有回調都參與其中,爲它實現後臺檢測一種可接受的方式,還是我真的需要使用服務完成所有這些工作?這似乎有很多開銷,我看不到任何好處,因爲這似乎工作正常。