我正在通过从每个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秒的时间内,这一个活动没有回调都参与其中,为它实现后台检测一种可接受的方式,还是我真的需要使用服务完成所有这些工作?这似乎有很多开销,我看不到任何好处,因为这似乎工作正常。