Android 没有连接。调用Connect或等待调用onConnected()

Android 没有连接。调用Connect或等待调用onConnected(),android,exception-handling,illegalstateexception,Android,Exception Handling,Illegalstateexception,我的应用程序以地图为中心。我经常调用requestLocationUpdates()。偶尔,当调用它时,我会得到这个异常。或者在调用该方法的任何其他地方。我在SOF上看到了建议的解决方案,遗憾的是,似乎没有什么对我有效。即使我调用mLocationClient.connect(),也不能保证它会立即连接,如果我错了,请纠正我。我如何解决这个问题 案例R.id.btn继续: 这是提出的例外情况: java.lang.IllegalStateException: Not connected. Cal

我的应用程序以地图为中心。我经常调用
requestLocationUpdates()
。偶尔,当调用它时,我会得到这个
异常。或者在调用该方法的任何其他地方。我在SOF上看到了建议的解决方案,遗憾的是,似乎没有什么对我有效。即使我调用
mLocationClient.connect()
,也不能保证它会立即连接,如果我错了,请纠正我。我如何解决这个问题

案例R.id.btn继续:

这是提出的例外情况:

java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
at com.google.android.gms.internal.de.bc(Unknown Source)
at com.google.android.gms.internal.ez.a(Unknown Source)
at com.google.android.gms.internal.ez$c.bc(Unknown Source)
at com.google.android.gms.internal.ey.requestLocationUpdates(Unknown Source)
at com.google.android.gms.internal.ez.requestLocationUpdates(Unknown Source)
at com.google.android.gms.internal.ez.requestLocationUpdates(Unknown Source)
at com.google.android.gms.location.LocationClient.requestLocationUpdates(Unknown Source)
at org.application.app.squeakee.SqueakeeMapListViewPager.onClick(SqueakeeMapListViewPager.java:1936)
at android.view.View.performClick(View.java:4475)
at android.view.View$PerformClick.run(View.java:18786)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5493)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
at dalvik.system.NativeStart.main(Native Method)

尝试在活动上实现GooglePlayServicesClient.ConnectionCallbacks和@Override onConnected(),并将所有需要连接的代码放入其中


这对我来说很有效。

我也有类似的错误,基本上,上一条评论中所说的将解决您的问题是的。 如果您确实跟踪了错误,它将在此处报告:

mLocationClient.requestLocationUpdates(REQUEST, this);
原因是当您调用该API方法时,客户端没有连接。这就是为什么前面的答案效果很好,因为他所做的基本上是在回调上启动位置更新

执行此操作时:

mLocationClient.connect();
您的客户端不会立即连接,但代码将继续运行,当您询问LocationUpdate时,您尚未连接(它仍在工作,需要时间),因此它会崩溃。另外,在执行.connect()时,基本上会激活onConnected()回调,因此如果在其中编写locationUpdates请求,则基本上可以解决大部分错误

此外,您还说您有很多请求,只有在某些情况下才会发生此错误。为此,您没有提供足够的代码,但我想我可以假设错误的发生是因为您取消请求并重新激活它们(您的方法onStop()、onPause()、onResume()和onStart())的方式。当你暂停你的应用程序时,你应该断开客户端的连接,但是你应该确保当你恢复应用程序时,你会再次重新连接它,所以也许只需执行以下操作

mLocationClient.connect();
在onResume()中,这可能会修复您的一些其他问题(再次说明,您没有提供该代码,可能您已经正确编码了,但是对于其他存在此问题的读者,这可能是一个修复此问题的建议)

回答得有点晚,但希望这能帮助社区的其他人


致以最诚挚的问候。

我们非常感谢您的解释。谢谢即使在onConnected()方法中,我在同一行代码中也遇到了这个错误。你怎么看?
mLocationClient.connect();