Почему значение метода Firebase перезапускает мою игровую активность?

# #python #firebase #firebase-realtime-database #setvalue

Вопрос:

Я пытаюсь разработать многопользовательскую версию арканоида для Android-устройства , но я застрял .

Это хранилище , на случай, если вы захотите присмотреться к нему поближе :

https://github.com/SmsArkanoid/Arkanoid-android-game-master .

Проблема заключается в GameMulti.java и PlayMulti.java . Я действительно создал комнату, где два игрока могут играть вместе ( будут играть вместе ).

Я создал функцию обновления , которая обновляет положение объекта на экране : мяч , весло, кирпич ecc.

На данный момент моей целью было обновить оценку в базе данных firebase. Счет разделяется между игроками 1 и 2 . Поэтому я делаю это, используя ссылку на базу данных для оценки и заданного значения. Это работает , за исключением того , что при обновлении значения происходит сброс активности и перезапуск игры .

 for (int i = 0; i < list.size(); i  ) {
                Brick b = list.get(i);
                int random = ThreadLocalRandom.current().nextInt(0, 10);
                for (Ball ball : balls){
                    if (ball.suddenlyBrick(b.getX(), b.getY())) {
                        list.remove(i);
                        contatore--;
                        guarateed_upg  ;
                        this.score  =  80;
                        pointReference.setValue(score);
                        if((random<=2 || guarateed_upg == 10)amp;amp; upgrades.isEmpty()) {
                            tipo = (int) (1   Math.random()*3);
                            Log.i("the random number is" , "" tipo);
                            if(upgrades.isEmpty()){
                                upgrades.add(new Upgrade(b.getX(), b.getY(), 10, context , tipo));
                            }
                            guarateed_upg =0;
                        }
                    }
                }
 

Структура базы данных — Комната — > Игрок 1 ->> Оценка . То же самое для игрока 2, подключенного к той же комнате .

Заранее благодарю вас за всех, кто мне поможет . Надеюсь, я достаточно ясно объяснил свою проблему .

Ответ №1:

Наконец-то я решил свою проблему .

Это была проблема, связанная с деятельностью, которая создавала комнаты для игры .

В этом действии был список значений, который оставался открытым, и в блоке метода onchange была запущена игровая активность .

Итак , когда игра началась , база данных была обновлена, было вызвано новое действие.

Таким образом, решение состояло в том, чтобы закрыть ValueEventListener для другого действия .