gpt4 book ai didi

android - GoogleApiClient 在调用 onConnected 函数后抛出 "GoogleApiClient is not connected yet"

转载 作者:IT老高 更新时间:2023-10-28 13:12:12 26 4
gpt4 key购买 nike

所以我发现了一些关于 GoogleApiClient 对我来说不是很清楚的东西。GoogleApiClient 有一个名为 onConnected 的函数,该函数在客户端已连接(肯定)时运行。

我得到了自己的函数:startLocationListening,最终在 GoogleApiClient 的 onConnected 函数上被调用。

所以我的 startLocationListening 函数在没有 GoogleApiClient 连接的情况下无法运行。

代码和日志:

@Override
public void onConnected(Bundle bundle) {
log("Google_Api_Client:connected.");
initLocationRequest();
startLocationListening(); //Exception caught inside this function
}

...

private void startLocationListening() {
log("Starting_location_listening:now");

//Exception caught here below:
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}

异常(exception)情况是:

03-30 12:23:28.947: E/AndroidRuntime(4936):     java.lang.IllegalStateException: GoogleApiClient is not connected yet.
03-30 12:23:28.947: E/AndroidRuntime(4936): at com.google.android.gms.internal.jx.a(Unknown Source)
03-30 12:23:28.947: E/AndroidRuntime(4936): at com.google.android.gms.common.api.c.b(Unknown Source)
03-30 12:23:28.947: E/AndroidRuntime(4936): at com.google.android.gms.internal.nf.requestLocationUpdates(Unknown Source)
03-30 12:23:28.947: E/AndroidRuntime(4936): at hu.company.testproject.service.GpsService.startLocationListening(GpsService.java:169)
03-30 12:23:28.947: E/AndroidRuntime(4936): at hu.company.testproject.service.GpsService.onConnected(GpsService.java:259)

...

我的调试日志还说 onConnected 函数被调用:

03-30 12:23:28.847: I/Locationing_GpsService(4936): Google_Api_Client:connected.
03-30 12:23:28.857: I/Locationing_GpsService(4936): initLocationRequest:initing_now
03-30 12:23:28.877: I/Locationing_GpsService(4936): initLocationRequest:interval_5000
03-30 12:23:28.897: I/Locationing_GpsService(4936): initLocationRequest:priority_100
03-30 12:23:28.917: I/Locationing_GpsService(4936): Starting_location_listening:now

在这之后我得到了异常。

我在这里遗漏了什么吗?我得到了“已连接”的响应我运行了我的 func,但我得到了错误“未连接”这是什么?另外一件烦人的事情是:我使用这个定位服务已经好几个星期了,从来没有出现过这个错误。

编辑:

我添加了一个更具体的日志输出,只是让我大吃一惊,看看这个:

@Override
public void onConnected(Bundle bundle) {

if(mGoogleApiClient.isConnected()){
log("Google_Api_Client: It was connected on (onConnected) function, working as it should.");
}
else{
log("Google_Api_Client: It was NOT connected on (onConnected) function, It is definetly bugged.");
}

initLocationRequest();
startLocationListening();
}

这种情况下的日志输出:

03-30 16:20:00.950: I/Locationing_GpsService(16608): Google_Api_Client:connected.
03-30 16:20:00.960: I/Locationing_GpsService(16608): Google_Api_Client: It was NOT connected on (onConnected) function, It is definetly bugged.

是的,我刚刚在 onConnected() 中得到了 mGoogleApiClient.isConnected() == false 这怎么可能?

编辑:

由于即使有声誉赏金也没有人能回答这个问题,我决定将此作为一个错误报告给 Google。接下来发生的事情让我感到非常惊讶。谷歌对我的报告的官方回答:

"This website is for developer issues with the AOSP Android source code and the developer toolset, not Google apps or services such as Play services, GMS or Google APIs. Unfortunately there doesn't seem to be an appropriate place to report bugs with Play Services. All I can say is that this website isn't it, sorry. Try posting on the Google Product Forums instead. "

完整问题 report here. (我希望他们不会因为它很傻而将其删除)

所以是的,我查看了 Google 产品论坛,但找不到任何主题可以发布此内容,所以目前我感到困惑和卡住。

地球上有人可以帮我解决这个问题吗?

编辑:

pastebin 中的完整代码

最佳答案

我刚刚注意到您正在 onStartCommand() 中创建 googleApiClient。这似乎是个坏主意。

假设您的服务被触发了两次。将创建两个 googleApiClient 对象,但您只能引用一个。如果您没有其引用的客户端执行其对 onConnected() 的回调,您将在该客户端中连接,但您实际拥有其引用的客户端仍可能未连接。

我怀疑这是怎么回事。尝试将您的 googleApiClient 创建移动到 onCreate 并查看您是否得到相同的行为。

关于android - GoogleApiClient 在调用 onConnected 函数后抛出 "GoogleApiClient is not connected yet",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29343922/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com