我正在通过从onPause()调用每个Activity的onResume()和minusActivity()中的plusActivity()来跟踪我的应用中当前可以看到的活动数量(应该是0或1)
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秒时间范围,并且不涉及对Activity的回调,是否可以接受完成后台检测的方法,或者我是否真的需要使用服务执行所有这些操作?这似乎是很多开销,我看不到任何好处,因为这似乎工作正常。
答案 0 :(得分:1)
您的解决方案可能有效,但我不知道。
您可以使用BroadcastReceiver。如果您使用BroadcastReceiver,则可以在活动执行onPause()时使用您的正/负代码发出Intent。 BroadcastReceiver将能够再次执行您的应用程序......