Сервис игр Google Play Загрузка сохраненной игры иногда занимает слишком много времени - PullRequest
0 голосов
/ 31 августа 2018

Я получаю данные в виде байтового массива из SnapshotsClient в приведенном ниже коде. В основном addOnCompleteListener вызывает одну минуту или больше. Иногда это работает хорошо. Длина байтового массива равна 81, я думаю, это не большие данные. Также все в порядке, когда устройство не имеет подключения к интернету. Я не понимаю, почему это занимает очень много времени?

void loadSnapshot() {
    loading.setVisibility(View.VISIBLE);
    SnapshotsClient snapshotsClient =
            Games.getSnapshotsClient(this, GoogleSignIn.getLastSignedInAccount(this));

    int conflictResolutionPolicy = SnapshotsClient.RESOLUTION_POLICY_MOST_RECENTLY_MODIFIED;

    snapshotsClient.open("userInfoData", true, conflictResolutionPolicy)
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.e("TAG", "Error while opening Snapshot.", e);
                }
            })
            .continueWith(new Continuation<SnapshotsClient.DataOrConflict<Snapshot>, byte[]>() {
                @Override
                public byte[] then(@NonNull Task<SnapshotsClient.DataOrConflict<Snapshot>> task) throws Exception {
                    Snapshot snapshot = task.getResult().getData();

                    try {
                        return snapshot.getSnapshotContents().readFully();
                    } catch (IOException e) {
                        Log.e("TAG", "Error while reading Snapshot.", e);
                    }

                    return null;
                }
            }).addOnCompleteListener(new OnCompleteListener<byte[]>() {
        @Override
        public void onComplete(@NonNull Task<byte[]> task) {
            try {
                if (task.getResult().length == 0) {
                    userInfo = new UserInfo(1, 0, 120);
                } else {
                    userInfo = ParcelableUtil.unmarshall(task.getResult(), UserInfo.CREATOR);
                }
                //UI changes

                }
            } catch (Exception e) {

            }
        }
    });
}

https://developers.google.com/games/services/android/savedgames

...