为什么在尝试发送负载时抛出 STATUS_OUT_OF_ORDER_API_CALL?

Why is STATUS_OUT_OF_ORDER_API_CALL thrown when trying to send a payload?

我正在尝试在连接成功建立后(STATUS_OK in onConnectionResult())从广告商向发现者发送一个字节负载,但我收到 STATUS_OUT_OF_ORDER_API_CALL错误(错误 8009)。我该如何解决这个问题?

status codes 上的文档页面,我知道应该首先调用一个方法,但我不知道那是什么方法。

我已经看到了关于这个问题的 。接受的答案说,如果在断开连接后尝试连接到某人,您可能会收到错误消息。这个问题是当我第一次打开应用程序并尝试发送负载时,我没有在 onConnectionResult() 中收到 API_CONNECTION_FAILED_ALREADY_IN_USESTATUS_ALREADY_ADVERTISING 状态代码。此外,post 与在尝试请求连接时收到错误有关,而在我的情况下,广告商和发现者都连接良好。

if (isAdvertising) {
    Log.d(TAG, "send: advertising fine");
}

connectionsClient
    .sendPayload(endpointId, payload)
    .addOnFailureListener(e -> Log.w(TAG,
                 "(send payload) onFailure: " + failureMsg, e) )
    .addOnSuccessListener(aVoid -> Log.w(TAG,
                 "(send payload) onSuccess: " + successMsg));

奇怪的是,从我尝试发送的第一个有效载荷开始,后续的有效载荷就无法发送。

错误信息:

2019-04-03 19:14:13.535 31128-31128/com.example.adhocdisplay W/ConnectionsActivity: (send payload) onFailure: Failed to send calibration direction payload
    com.google.android.gms.common.api.ApiException: 8009: STATUS_OUT_OF_ORDER_API_CALL
        at com.google.android.gms.internal.nearby.zzby.setFailedResult(Unknown Source:4)
        at com.google.android.gms.internal.nearby.zzba.zzc(Unknown Source:18)
        at com.google.android.gms.internal.nearby.zzea.dispatchTransaction(Unknown Source:7)
        at com.google.android.gms.internal.nearby.zzb.onTransact(Unknown Source:22)
        at android.os.Binder.execTransact(Binder.java:731)

免责声明:我在附近工作

这个错误在正常使用中不应该发生...这意味着我们已经忘记了您正在使用的策略。这可能是因为您调用了 stopAllEndpoints 或以某种方式与我们的服务断开连接(注意:与从远程设备断开连接不同)。或者这可能是尝试混合和匹配策略(例如 CLUSTER、STAR、POINT_TO_POINT)的结果。

好消息是,这个特殊的错误条件已在最近的提交中被删除,并将很快推广到设备上。但我仍然对你如何 运行 感到困惑。