我尝试使用Play游戏库保存和加载快照但是我被卡住了:我发送了我的字节数组,我想,它是正确保存在云中的,因为如果我启动了由
Games.Snapshots.getSelectSnapshotIntent(...)
我可以看到保存的快照。
在游戏重启时,我想在后台加载快照。这里出现问题:返回的字节数组总是为空,当我尝试加载时,保存的快照将从云中删除。
如何以正确的方式保存/加载快照?
保存背景方法的片段:
Snapshots.OpenSnapshotResult result =
Games.Snapshots.open(gameHelper.getApiClient(), "test_filename", true).await();
switch (result.getStatus().getStatusCode()) {
case GamesStatusCodes.STATUS_OK:
case GamesStatusCodes.STATUS_SNAPSHOT_CONFLICT:
Snapshot snapshot = result.getSnapshot();
snapshot.getSnapshotContents().writeBytes(data);
SnapshotMetadataChange metadataChange = new SnapshotMetadataChange.Builder()
.setDescription("Modified data at: " + Calendar.getInstance().getTime())
.build();
Games.Snapshots
.commitAndClose(gameHelper.getApiClient(), snapshot, metadataChange)
.await();
return;
default:
throw new Exception();
}
加载背景方法的片段:
Snapshots.OpenSnapshotResult result =
Games.Snapshots.open(gameHelper.getApiClient(), "test_filename", true).await();
switch (result.getStatus().getStatusCode()) {
case GamesStatusCodes.STATUS_OK:
case GamesStatusCodes.STATUS_SNAPSHOT_CONFLICT:
Snapshot snapshot = result.getSnapshot();
byte[] data = snapshot.getSnapshotContents().readFully();
Games.Snapshots.discardAndClose(gameHelper.getApiClient(), snapshot);
return data;
default:
throw new Exception();
}
请注意,我没有任何冲突或异常,即使使用SnapshotsCoordinator帮助程序,我也无法使用它。
播放服务版本:10.2.1