我有一个使用GPS的应用程序,GPS和屏幕可能都非常耗电。
我想做的就是让屏幕进入睡眠状态以减少功耗(例如,显示超时或使用电源按钮),但是让GPS仍在后台运行的应用程序。
但是,如果我通过返回外壳程序/启动或重新启动另一个应用程序将应用程序从前台显式移开,那么我希望GPS停止。
我的问题是我无法区分两者。在所有情况下,当应用程序从前景移到背景(例如,电源按钮可杀死屏幕或返回外壳)时,它都会先经过onPause()然后再经过onStop()。无论何时启动,它都会先经过onStart()然后再经过onResume()(如果已经运行过,则先经过onRestart();如果尚未运行,则先经过onCreate())。
因此,似乎没有办法通过查看生命周期回调来确定屏幕是否仅已关闭,或者是否返回到外壳程序/运行其他应用程序-这仅仅是一个简单的前台,或者不是状态差异。
有没有办法检测出差异?