Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java onCreate与onStart中的GoogleAppClient连接_Java_Android_Google Play Services_Google Api Client_Android Googleapiclient - Fatal编程技术网

Java onCreate与onStart中的GoogleAppClient连接

Java 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()中连接客户端并断开连接的FragmentActivity 它位于onStop()中

它适当地处理用户可恢复的错误和调用 上的onConnectionFailed(ConnectionResult) UnsolvedConnectionFailedListener,如果ConnectionResult没有 决议这就消除了与锅炉相关的大部分锅炉板 使用GoogleAppClient


虽然这听起来有点幼稚,但我的问题是,这是否是我们在
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)