为什么在onResume中调用startLocationUpdates,在onPause中调用stopLocationUpdates?

Why to call startLocationUpdates in onResume and stopLocationUpdates in onPause?

关于 receive location updates 的文档指出 startLocationUpdates() 应该在 onResume() 中调用,stopLocationUpdates() 应该在 onPause() 中调用,为什么不在 onStart() 中调用和 onStop()?

onResume()onPause() 中调用有什么好处?

那是 "advice",不是强制性的。 好处是避免请求位置更新(并因此消耗电池),而您 using/not 不需要这些位置,因为 activity 在后台。

这取决于你的用例,你可以在 onStart/onStop 中完成,但是如果你在 onPause->onStop 转换期间不使用这些位置,最好放在 onPause 中。

如果您查看下图,当 activity 进入前台时调用 onPause,然后暂停 onStop。

关于 background/not 可见性的一个小差异: 如果您有一个带有 ThemeDialog 的 activity,则会调用 onPause,但不会调用 onStop。