检测应用程序关闭与 Activity 或 DialogFragment 中的更改

Detect application close vs change in Activity or DialogFragment

我的应用程序生命周期似乎遇到了限制。

我有一个 activity,它使用 Google API。在某些时候,我与 API 建立了连接,它尝试连接。第一次尝试连接失败,因为我们还没有选择一个帐户并授权它。因此,Google SDK 启动 connectionResult.startResolutionForResult - 一种基本上只显示帐户选择 DialogFragment 的方法。

当调用 SDK 方法时,它会在我的 Activity.

上触发 onPause

这是一个问题,因为我的 onPause 方法在 Google API 上调用了 disconnect()(这是一种好的做法)。然后的问题是我 do 想在关闭 activity/application 时断开连接,但我 do 不想在我的时候开始断开连接'我正在解决帐户问题(在后台我正在重新尝试连接,一旦用户选择他们的 Google 帐户就会成功,似乎没有回调来检测它何时发生)

我缺少的这个拼图是什么?

理想情况是将 disconnect() 移动到 onStop()

根据 Activity 生命周期 documentation onStop() 将被调用,除了内存不足的情况(无论如何都不是理想情况)。我相信你应该没事。

但是无论如何,如果您希望在内存不足的情况下调用此 disconnect() 方法,那么您可能应该将此方法保留在 onPause() 中并使用布尔标志。打开对话框时将其设置为 true。当此布尔标志为真时,不要断开连接。不要忘记将它设置为 false 否则你永远不会断开连接

这是我能想到的两种解决方案。希望对你有帮助。