Java onCreate与onStart中的GoogleAppClient连接
摘自 在支持库中启用自动生命周期管理 在onStart()中连接客户端并断开连接的FragmentActivity 它位于onStop()中 它适当地处理用户可恢复的错误和调用 上的onConnectionFailed(ConnectionResult) UnsolvedConnectionFailedListener,如果ConnectionResult没有 决议这就消除了与锅炉相关的大部分锅炉板 使用GoogleAppClientJava onCreate与onStart中的GoogleAppClient连接,java,android,google-play-services,google-api-client,android-googleapiclient,Java,Android,Google Play Services,Google Api Client,Android Googleapiclient,摘自 在支持库中启用自动生命周期管理 在onStart()中连接客户端并断开连接的FragmentActivity 它位于onStop()中 它适当地处理用户可恢复的错误和调用 上的onConnectionFailed(ConnectionResult) UnsolvedConnectionFailedListener,如果ConnectionResult没有 决议这就消除了与锅炉相关的大部分锅炉板 使用GoogleAppClient 虽然这听起来有点幼稚,但我的问题是,这是否是我们在onSta
虽然这听起来有点幼稚,但我的问题是,这是否是我们在
onStart
方法中启动GoogleAppClient连接的重要步骤?如果我改为在onCreate
中建立连接,会有什么伤害吗?我有多个场景,在这些场景中,由于遗留代码,我看到需要在onCreate
中连接到GoogleAppClient。我还尝试了在onCreate中建立连接,这很有效(我没有看到任何崩溃)。这是个坏主意吗?那么,为什么在onStart
中启动连接并在onStop
中停止连接是必要的或重要的呢?您可以使用以下线程参考:
当活动从停止状态恢复时,将调用onStart()
。例如,如果有活动A并从中启动活动B,则活动A将暂停(onPause()
),然后停止(onStop()
),并移动到后堆栈。在此之后,如果您按回到活动B中,B将暂停(onPause()
),停止(onStop()
)并销毁(onDestroy()
),活动A将从后堆栈恢复、启动(onStart()
)和恢复(onResume()
)。如您所见,系统不会再次调用onCreate()
如何使用onStart()?例如,您应该在onStop()
中注销GPS、传感器等的侦听器,然后在onStart()
中再次注册。如果您在onCreate()
中注册并在onDestroy()
中取消注册,则GPS服务将始终工作,并会耗尽电池电量
还有人指出,的主要作用是暂停后调用活动。如果调用了
onCreate()
,则应再次执行所有初始化,通过使用onStart()
我们可以初始化那些在onstop()
中未初始化的内容,您可以使用此线程参考:
当活动从停止状态恢复时,将调用onStart()
。例如,如果有活动A并从中启动活动B,则活动A将暂停(onPause()
),然后停止(onStop()
),并移动到后堆栈。在此之后,如果您按回到活动B中,B将暂停(onPause()
),停止(onStop()
)并销毁(onDestroy()
),活动A将从后堆栈恢复、启动(onStart()
)和恢复(onResume()
)。如您所见,系统不会再次调用onCreate()
如何使用onStart()?例如,您应该在onStop()
中注销GPS、传感器等的侦听器,然后在onStart()
中再次注册。如果您在onCreate()
中注册并在onDestroy()
中取消注册,则GPS服务将始终工作,并会耗尽电池电量
还有人指出,的主要作用是暂停后调用活动。如果调用了
onCreate()
,那么所有的初始化都应该重新进行,通过使用onStart()
我们可以初始化那些在onstop()
中未初始化的东西,将代码从onStart
移动到onCreate
将导致问题。例如,使用位置服务在地图上显示位置的应用程序。这是一个性能良好的应用程序,当用户不再使用该应用程序时,它会停止在顶部使用定位服务
onCreate
,onStart
)onStop
)onStart
,而不是onCreate
)如果仅在创建时连接,这意味着在步骤3之后应用程序未连接。用户将在没有正确功能的情况下使用应用程序,因为返回应用程序时可能不会调用
onCreate
将代码从onStart
移动到onCreate
会导致问题。例如,使用位置服务在地图上显示位置的应用程序。这是一个性能良好的应用程序,当用户不再使用该应用程序时,它会停止在顶部使用定位服务
onCreate
,onStart
)onStop
)onStart
,而不是onCreate
)如果仅在创建时连接,这意味着在步骤3之后应用程序未连接。用户将在没有正确功能的情况下使用应用程序,因为返回应用程序时可能不会调用
onCreate
感谢@mattm的回复。但是如果你让自己处理连接,它不会引起任何问题吗?这只是一个正确的建议,不是必须要做的事吗?在异常等情况下运行?@Ahmed在我提供的示例中,应用程序不会崩溃,但将无法运行。即使您自己管理连接,也会发生这种情况。那么什么是完美的解决方案?另一方面:EnableAutoManage似乎也不稳定。谢谢@mattm的回复。但是如果你让我说你自己处理连接,它不会引起任何问题
public GoogleApiClient.Builder enableAutoManage (FragmentActivity
fragmentActivity, GoogleApiClient.OnConnectionFailedListener
unresolvedConnectionFailedListener)