У меня проблема с приложением, которое я сделал.Это простая игра, в которой я загружаю данные из базы данных Room моим методом onCreate
, сохраняю загруженные данные в List<GameData> gameData
и затем запускаю игру.
gameDao.getAll()
.subscribe(gameDatas -> {
gameData.addAll(gameDatas);
startGame();
});
внутри моего startGame
, я выбираю случайным образомчисло в диапазоне [0, gameData.size()]
и выполнить какую-либо связанную с игрой работу с соответствующим gameData
.
public void startGame(){
Random random = new Random();
int randomNumber = random.nextInt(gameData.size());
// do something with gameData[ramdomNumber]
}
Итак, пользователь продолжает играть, а затем, когда пользователь проигрывает, я отправляю его на GameOverActivity
сstartActivityForResult(gameOver,1123)
Внутри GameOverActivity
пользователь может
- перезапустить игру
- посмотреть объявление, чтобы продолжить игру
- другой социальный персонал
Поэтому, когда пользователь нажимает кнопку перезапуска, я просто заканчиваю GameOverActivity
, который перенаправит меня на onActivityResult
из GameActivity
.Здесь я просто вызываю метод startGame
снова, и он должен предположительно начать новую игру.
Теперь проблема иногда для некоторых устройств, gameData
становится пустым, и поэтому я получаю исключение внутри startGame
, когда я звоню random.nextInt(gameData.size())
java.lang.RuntimeException:
at android.app.ActivityThread.performResumeActivity (ActivityThread.java:3790)
at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3830)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3038)
at android.app.ActivityThread.-wrap11 (Unknown Source)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1696)
at android.os.Handler.dispatchMessage (Handler.java:105)
at android.os.Looper.loop (Looper.java:164)
at android.app.ActivityThread.main (ActivityThread.java:6944)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)
Caused by: java.lang.RuntimeException:
at android.app.ActivityThread.deliverResults (ActivityThread.java:4491)
at android.app.ActivityThread.performResumeActivity (ActivityThread.java:3762)
Caused by: java.lang.IllegalArgumentException:
at java.util.Random.nextInt (Random.java:388)
at com.company.game.GameActivity.startGame (GameActivity.java:149)
at com.company.game.GameActivity.onActivityResult (GameActivity.java:477)
at android.app.Activity.dispatchActivityResult (Activity.java:7556)
at android.app.ActivityThread.deliverResults (ActivityThread.java:4487)
Я не преувеличиваюпочему gameData
очищается, и я не могу проверить, потому что я никогда не сталкивался во время тестирования, и я получил отчет о сбое из PlayConsole.Есть идеи, что может быть причиной этого?