onCreate与onStart中的GoogleAPIClient连接



摘录自Google API客户文档,

public GoogleApiClient.Builder enableAutoManage (FragmentActivity
fragmentActivity, GoogleApiClient.OnConnectionFailedListener
unresolvedConnectionFailedListener)

在支持库中实现自动生命周期管理在onStart()中连接客户端并断开连接的FragmentActivity它位于onStop()中。

它适当地处理用户可恢复的错误并调用上的onConnectionFailed(ConnectionResult)如果ConnectionResult没有决议这消除了与使用GoogleApiClient。

虽然这听起来有点天真,但我的问题是,这是否是我们用onStart方法启动GoogleAPIClient连接的重要步骤?如果我改为在onCreate中进行连接,会有什么害处吗?我在多个场景中看到,由于遗留代码的原因,需要连接到onCreate中的googleApiClient。我也尝试过在onCreate中建立连接,这很有效(我没有看到任何崩溃)。这是个坏主意吗?那么,为什么在onStart中启动连接并在onStop中停止连接是必要的或重要的呢?

您可以参考这个线程:onStart()到底做什么?-安卓

活动从停止状态恢复时调用

onStart()。例如,如果您有活动A并从中启动活动B,则活动A将暂停(onPause()),然后停止(onStop())并移到后堆栈。之后,如果按Back进入活动B,B将暂停(onPause())、停止(onStop())和销毁(onDestroy()),活动A将从后堆栈恢复、启动(onStart())和恢复(onResume())。正如您所看到的,系统不会再次调用onCreate()进行A。

如何使用onStart()?例如,您应该在onStop()中注销GPS、传感器等的侦听器,然后在onStart()中再次注册。如果您在onCreate()中注册并在onDestroy()中注销,则GPS服务将始终工作,并且会耗尽电池电量。

还指出,onStart()的主要作用是在暂停后调用活动。如果调用了onCreate(),那么所有的初始化都应该再次进行,通过使用onStart(),我们可以初始化那些在onstop()中未初始化的东西。

将代码从onStart移动到onCreate会导致问题。例如,一个应用程序使用定位服务在地图上显示位置。这是一个行为良好的应用程序,当用户不再使用该应用程序时,它将停止使用位置服务onStop

  1. 用户启动应用程序(onCreateonStart)
  2. 用户离开(onStop)
  3. 用户在应用程序被销毁之前返回应用程序(onStart,但不是onCreate)

如果仅在onCreate上连接,则意味着在步骤#3之后未连接应用程序。用户将在没有正确功能的情况下使用该应用程序,因为返回应用程序时可能不会调用onCreate

相关内容

  • 没有找到相关文章

最新更新