我正在追踪我的应用程序中当前可见的活动数量(应该为0或1),通过在每个Activity的onResume()中调用plusActivity(),在onPause()中调用minusActivity()。
plus / minusActivity位于扩展Application的myApplication类中。
这些方法会增加和减少计数器。每次调用minusActivity()时,它还会发布一个可运行的Runnable,在2秒后运行。当runnable执行时,如果最后一次关闭2秒钟前没有打开另一个activity(例如,foregroundedActivities == 0,因为没有任何调用plusActivity()在2秒内),则调用一个方法来执行一些需要在后台发生的操作。
以下是代码片段:
这些方法会增加和减少计数器。每次调用minusActivity()时,它还会发布一个可运行的Runnable,在2秒后运行。当runnable执行时,如果最后一次关闭2秒钟前没有打开另一个activity(例如,foregroundedActivities == 0,因为没有任何调用plusActivity()在2秒内),则调用一个方法来执行一些需要在后台发生的操作。
以下是代码片段:
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秒内运行,并且没有回调到Activity,使用此方法来实现后台检测是否可接受?还是我真的需要使用Service来完成所有操作?因为似乎这样做会增加很多额外的开销,而我也看不出任何好处,因为这种方式似乎可以正常工作。