onPause(),主页和后退按钮的不同结果

onPause(), different results from home and back button

我正在创建一个应用程序,它使用 locationManager() 来处理来自 GPS 的更新。当应用程序关闭时,我希望 locationManager 的更新停止并且现在有这段代码。

@Override
protected void onPause() {
    super.onPause();
    if(locationManager != null){
        locationManager.removeUpdates(locationListener);
}

当我使用后退按钮退出应用程序时,onPause() 被调用并且 GPS 停止。这里没有什么奇怪的。但是,如果我按下主页按钮,状态栏中的 GPS 标记仍然可见,即使 onPause 被调用也是如此。

那是因为当您使用后退按钮退出应用程序时 Activity 被销毁(收到 onDestroy 回调)。并且由于没有进程使用 GPS 标记也被隐藏。如果您锁定设备屏幕或按主页按钮,应用程序仍然 运行 但 activity 已停止。 使用您的代码,您将不会在 onPause 之后获得任何 GPS 更新,直到您再次注册它们。