onCreate与onStart中的GoogleAPIClient连接

时间:2017-11-07 00:03:13

标签: java android google-play-services google-api-client android-googleapiclient

摘自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中停止连接是必要或重要的?

2 个答案:

答案 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

  1. 用户启动应用程序(onCreateonStart
  2. 用户离开(onStop
  3. 用户在销毁之前返回应用程序(onStart,但不是onCreate
  4. 如果仅在onCreate上连接,则表示在步骤#3之后未连接应用程序。用户将使用没有正确功能的应用程序,因为在返回应用程序时可能不会调用onCreate