Я потратил дни, пытаясь выяснить причину этой аварии в коде сохраненной игры Google Play Службы с устройства тестера и не знаю, что еще попробовать, поскольку оно работает на всех трех моих устройствах. Грохот, что происходит это:Служебные программы Google Play Сохраненные снимки с моментальным снимком()
java.lang.NullPointerException: Must provide a previously opened Snapshot
, когда я пытаюсь позвонить
snapshot.readFully();
даже если снимок был открыт и код возврата проверяется и проверяется, чтобы увидеть, если она равна нулю. Вот путь кода ведущий к аварии, с неисполненными секциями удалены для краткости:
public void LoadSnapshot()
{
AsyncTask<Void, Void, SNAPSHOT_ASYNC_RESULT> task = new AsyncTask<Void, Void, SNAPSHOT_ASYNC_RESULT>()
{
@Override
protected SNAPSHOT_ASYNC_RESULT doInBackground(Void... params)
{
if (isSignedIn())
{
Snapshots.OpenSnapshotResult result = Games.Snapshots.open(getApiClient(), "MySnapshot", true).await();
int status = result.getStatus().getStatusCode();
DebugLog("Snapshot Load Open result code: " + status);
if (status == GamesStatusCodes.STATUS_SNAPSHOT_CONFLICT)
{
Snapshot snapshot = result.getSnapshot();
Snapshot conflictSnapshot = result.getConflictingSnapshot();
//write both conflicted files so we can merge them
if (snapshot != null && conflictSnapshot != null)
{
byte[] ssdata = snapshot.readFully(); //CRASH HERE!
...
}
...
}
}
}
}
task.execute();
}
Я получаю подобные сбои из того же самого устройства, когда просто спасительные иногда с .Open(), а затем .writebytes() ,
Это делает игру нестабильной, и мне нужно как-то это зафиксировать. Любая помощь или идеи будут высоко оценены.
Все, что я могу думать, потому что оно работает на фоне потока в AsyncTask, что-то плохое произошло между открытием моментального снимка и попыткой прочитать/записать его на этом устройстве. По словам тестера, это «большая часть» времени.
Приятно слышать. Я тоже решил не так давно. Я сейчас сохраняю и загружаю! Теперь о внедрении лидеров и достижений! – Scumble373