摘自Google API Client documentation,
public GoogleApiClient.Builder enableAutoManage (FragmentActivity
fragmentActivity, GoogleApiClient.OnConnectionFailedListener
unresolvedConnectionFailedListener)
在支持库中启用自动生命周期管理 FragmentActivity连接onStart()中的客户端并断开连接 它在onStop()。
它适当地处理用户可恢复的错误并调用 onConnectionFailed(ConnectionResult)上 如果ConnectionResult没有,则为unresolvedConnectionFailedListener 解析度。这消除了与之相关的大部分锅炉板 使用GoogleApiClient。
虽然听起来有点天真,但我的问题是否是我们在onStart
方法中开始连接GoogleAPIClient的重要步骤?如果我在onCreate
中建立连接,会有什么危害吗?我有多种情况,由于遗留代码,我认为需要连接到onCreate
中的googleApiClient。我也尝试在onCreate中建立一个连接并且有效(我没有看到任何崩溃)。这是个坏主意吗?那么为什么在onStart
中启动连接并在onStop
中停止连接是必要或重要的?
答案 0 :(得分:0)
您可以参考此主题:What does onStart() really do? - Android
当活动从停止状态恢复时,将调用
onStart()
。例如,如果您有活动A并从中启动活动B,则活动A将暂停(onPause()
)然后停止(onStop()
)并移至后台堆栈。在此之后,如果您按回到活动B,B将暂停(onPause()
),停止(onStop()
)并销毁(onDestroy()
),活动A将从后面恢复堆栈,已启动(onStart()
)并已恢复(onResume()
)。如您所见,系统不会再次为onCreate()
调用A.如何使用
onStart()
?例如,您应该在onStop()
中取消注册GPS,传感器等的侦听器,然后再次在onStart()
中注册。如果您在onCreate()
注册并在onDestroy()
取消注册,那么GPS服务将始终有效并且会耗尽电量。
还有人说,onStart()
的主要作用是在暂停后调用活动时。如果调用了onCreate()
,那么应该再次使用onStart()
完成所有初始化,我们可以初始化那些在onstop()
中未初始化的内容。
答案 1 :(得分:0)
将代码从onStart
移至onCreate
会导致问题。例如,使用位置服务在地图上显示位置的应用程序。当用户不再使用该应用程序时,这是一个行为良好的应用程序,它停止使用位置服务onStop
。
onCreate
,onStart
)onStop
)onStart
,但不是onCreate
)如果仅在onCreate
上连接,则表示在步骤#3之后未连接应用程序。用户将使用没有正确功能的应用程序,因为在返回应用程序时可能不会调用onCreate
。