mat*_*joe 24 android google-play-services google-play-games
我正在使用Google Play服务开发Android游戏,以创建基于回合的匹配.
起初一切都很好,我为登录用户加载了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);
Run Code Online (Sandbox Code Playgroud)
它总是加载任何给定状态的所有匹配.但是从上周末开始调用回调但是没有匹配,因为我没有参与任何匹配(状态响应没问题).我在手机上删除了Google Play服务的缓存,然后重新启动了设备.在那一刻,所有比赛再次显示,直到我下次打开应用程序.所有比赛都失踪了.一旦我开始新的比赛,比赛将继续显示上述方法(刷新列表),直到我关闭应用程序.在下一次发布时,比赛也消失了.
我不得不说游戏尚未发布,但在Google Play开发者控制台的测试阶段.我在模拟器上发现了同样的问题.它运行好几天但突然遇到了与我的真实设备相同的问题(后来的构建因此不是单个代码更改导致这一点).
有没有其他人注意到这种行为或有关于如何解决它的想法?
可能与多个应用程序连接到一个游戏有关?我有两个连接调试证书签名的应用程序,今天下午为签名的apk添加了一个.当我使用签名的apk时,它再次起作用,直到我部署了一个新的测试应用程序(debug signed).切换回签名的apk后,错误仍然存在.
由于似乎没有人知道答案让我重新解释这个问题.我应该自己在设备上缓存TurnBasedMatches吗?我刚刚删除了播放服务缓存并重新打开了我的应用程序.结果?数百个游戏的列表(因为我每次测试时都必须开始一个新游戏...)
我的代码来处理loadMatchesResult
@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();
}
Run Code Online (Sandbox Code Playgroud)
找到另一个兴趣点..它开始看起来像在设备上部署新的apk时出现的问题...一旦我部署新的apk(通过从谷歌播放安装alpha版本或从Android Studio直接调试版本)匹配消失了.当我不更改apk时,我可以重新启动手机/关闭应用程序,它工作正常...
如果我通过Play商店更新应用程序也会出现问题......应该有更多人遇到此问题!
使用await() 检索结果或将结果传递给结果回调后,尝试再次检索结果将导致错误。调用者或回调接收者有责任释放与返回结果关联的任何资源。某些结果类型可能实现 Releasable,在这种情况下,应该使用 release() 来释放关联的资源。
检索结果后,当您尝试再次获取结果时,会出现错误,直到释放与返回结果关联的资源为止,这就是为什么清除缓存可以使它们再次可见。您需要访问设备的缓存并从那里显示结果,或者每当您想要再次访问结果时清除关联的资源(在程序内)。
| 归档时间: |
|
| 查看次数: |
647 次 |
| 最近记录: |