Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/136.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
Android 首次加载后,基于Turnbased的匹配将消失_Android_Google Play Services_Google Play Games - Fatal编程技术网

Android 首次加载后,基于Turnbased的匹配将消失

Android 首次加载后,基于Turnbased的匹配将消失,android,google-play-services,google-play-games,Android,Google Play Services,Google Play Games,我正在为Android开发一款游戏,使用Google Play服务创建基于turnbased的比赛 起初一切都很好,我使用 Games.TurnBasedMultiplayer.loadMatchesByStatus(getApiClient(), new int[]{TurnBasedMatch.MATCH_TURN_STATUS_MY_TURN, TurnBasedMatch.MATCH_TURN_STATUS_THEIR_TURN,

我正在为Android开发一款游戏,使用Google Play服务创建基于turnbased的比赛

起初一切都很好,我使用

Games.TurnBasedMultiplayer.loadMatchesByStatus(getApiClient(),
        new int[]{TurnBasedMatch.MATCH_TURN_STATUS_MY_TURN,
                TurnBasedMatch.MATCH_TURN_STATUS_THEIR_TURN,
                TurnBasedMatch.MATCH_TURN_STATUS_INVITED,
                TurnBasedMatch.MATCH_TURN_STATUS_COMPLETE})
        .setResultCallback(this);
它总是加载任何给定状态的所有匹配项。但从上周末起,回调被调用,但没有匹配,因为我没有参与任何匹配(状态响应正常)。我删除了手机上Google Play服务的缓存并重新启动了设备。在那一刻,所有的比赛再次显示,直到下次我打开应用程序。所有的比赛都没有了。 一旦我开始一个新的匹配项,匹配项就会按照上述方法(刷新列表)显示,直到我关闭应用程序。在下一次发射时,这场比赛也就结束了

我不得不说,这款游戏还没有发布,只是在Google Play开发者控制台上处于测试阶段。我在模拟器上发现了同样的问题。它运行了好几天,但突然出现了与我的真实设备相同的问题(由于是后期构建的,所以不是一次代码更改就导致了这一问题)

有没有其他人注意到这种行为,或者对如何解决它有想法

这可能与将多个应用程序连接到一个游戏有关吗?我连接了两个用调试证书签名的应用程序,今天下午为签名的apk添加了一个。当我使用签名的apk时,它再次工作,直到我部署了一个新的测试应用程序(debug-signed)。切换回已签名的apk后,错误仍然存在

由于似乎没有人知道答案,让我重新表述这个问题。我应该在设备上缓存TurnBasedMatch吗?我刚刚再次删除了play services缓存并重新打开了我的应用程序。结果如何?数百个游戏的列表(因为每次测试时我都要开始一个新游戏…)

处理LoadMatcheResult的代码

@Override
public void onResult(TurnBasedMultiplayer.LoadMatchesResult loadMatchesResult)
{
    showToast("GotMatches status: " + loadMatchesResult.getStatus().getStatusCode());

    //add matches to listview (only caching matchId, no references to turnbasedmatch)

    loadMatchesResult.getMatches().getMyTurnMatches().close();
    loadMatchesResult.getMatches().getInvitations().close();
    loadMatchesResult.getMatches().getTheirTurnMatches().close();
    loadMatchesResult.getMatches().getCompletedMatches().close();
    loadMatchesResult.release();

}
找到了另一个兴趣点。。在将新apk部署到设备时,问题似乎开始出现。。。一旦我部署了一个新的apk(通过从google play安装alpha版本或直接从Android Studio调试版本),匹配项就消失了。当我不更改apk时,我可以重新启动手机/关闭应用程序,它工作正常

如果我通过play store更新应用程序,也会出现问题。。。应该有更多的人有这个问题

从中获取)

使用await()检索结果或将结果传递到结果回调后,再次尝试检索结果是错误的。调用方或回调接收方负责释放与返回结果关联的任何资源。某些结果类型可能实现Releasable,在这种情况下,应该使用release()释放相关资源


检索结果后,在释放与返回结果相关联的资源之前,再次尝试获取结果时会出现错误,这就是清除缓存以使其再次可见的原因。您需要访问设备的缓存并从中显示结果,或者在需要再次访问结果时清除相关资源(程序内)。

在开发人员控制台中找到“已保存的游戏”之前,我也遇到过同样的问题:

  • 转到游戏服务->游戏详细信息->保存的游戏
  • 在“

  • 这应该可以解决您的问题。

    我假设在释放数据缓冲区后尝试使用数据缓冲区时会出现此“错误”?或者这是否意味着一个匹配只在Games.TurnBasedMultiplayer.loadMatchesByStatus()中返回一次。这是没有意义的,因为刷新后仍会显示。值得一提的是,比赛也不会在游戏中显示,我也有类似的问题。每当我从Android Studio运行应用程序时,我都会丢失所有保存的游戏。这是上周突然发生的。我会尝试弄清楚如果我通过Google play更新应用程序会发生什么。如果问题只发生在开发过程中,我可以通过手动清空缓存来解决(远不是完美的…),但是如果问题发生在google play更新中,那么在使用play store更新时,这是一个绝对没有goSame的问题。。这真的阻止了我发布我的应用程序。如果是这样的话,你会期望游戏服务视图正确显示数据,但事实并非如此。在我看来,当更新apkI时,playservices库中的某个地方出现了一个bug,我的基于回合的游戏也有类似的问题。当测试人员从google play商店更新我的应用程序时,基于回合的匹配通常会消失。在开发过程中,当我在设备上安装新版本的应用程序时,也会发生同样的情况。有关此问题的任何更新?github上有一个问题。有人在两周前告诉我要调查,但没有其他更新。。就我个人而言,我已经完全删除了google play游戏,转而使用另一个(自定义)backend@matsjoe是的,我已经看到了那个线程,但是问题没有解决。使用谷歌游戏服务,我的应用程序几乎完成了。不幸的是,我没有时间或金钱切换到另一个后端。@matsjoe这是您自己的后端还是公开可用的后端?我们也考虑切换。尽管我们不愿意这样做,但缺乏支持可能会迫使我们这样做。不幸的是,这对我不起作用。我仍然有问题,尽管已经打开了保存的游戏。我们在这里也有一些缺点。游戏商店的更新似乎可以保存游戏,但在开发过程中不会。有时候他们也会留下,很奇怪