我通过从每个活动的 onResume() 调用 plusActivity() 和从 onPause() 调用 minusActivity() 来跟踪我的应用程序中当前可见的活动数量(应该是 0 或 1)
plus/minusActivity 位于我的 myApplication 类中,该类扩展了 Application。
这些方法递增和递减计数器。每次调用 minusActivity() 时,它还会发布一个在 2 秒后运行的可运行对象。当可运行执行时,如果在 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 的回调,这是否是完成后台检测的可接受方法,或者我真的需要使用 Service 来完成所有这些工作吗?这似乎有很多开销,而且我看不到任何好处,因为这似乎工作正常。
你的解决方案可能有效,但我不知道。
您也许可以使用广播接收器。如果您使用 BroadcastReceiver,则可以在活动执行 onPause() 时发出 Intent 以及加号/减号代码。 BroadcastReceiver 将能够再次执行您的应用程序...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)