Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在firestore更新方法之后重新创建活动_Java_Android_Firebase_Google Cloud Firestore - Fatal编程技术网

Java 在firestore更新方法之后重新创建活动

Java 在firestore更新方法之后重新创建活动,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我一直在尝试制作一个应用程序,在60秒后,用户输入收集的所有数据都会更新到firestore的现有数据中。但是,只要我调用firebase的.update方法,活动就会被重新创建,计时器就会再次启动,并且不会继续下一个活动。它卡在一个循环中,每60秒之后,活动就会一次又一次地重新创建自己。我知道这是因为update方法,因为如果我对特定的update方法行进行注释,应用程序将正常运行,也就是说,60秒后,应用程序将启动下一个活动。另外,我使用firestore侦听器只获取一次数据,而不是实时更新

我一直在尝试制作一个应用程序,在60秒后,用户输入收集的所有数据都会更新到firestore的现有数据中。但是,只要我调用firebase的.update方法,活动就会被重新创建,计时器就会再次启动,并且不会继续下一个活动。它卡在一个循环中,每60秒之后,活动就会一次又一次地重新创建自己。我知道这是因为update方法,因为如果我对特定的update方法行进行注释,应用程序将正常运行,也就是说,60秒后,应用程序将启动下一个活动。另外,我使用firestore侦听器只获取一次数据,而不是实时更新侦听器。我还是不明白为什么会这样。请帮忙

编辑:


cr.document.update是给我带来麻烦的一个,如果我在计时器用完后注释掉它,下一个活动就会开始,但是如果我取消注释,在计时器结束后,它只会重新创建活动并在循环中运行。老实说,
GamePage.this.finish()
似乎很可疑,如果你删除它会发生什么

移除startActivity时会发生什么

更新方法不应该是真正的问题,除非它导致可能重新启动应用程序的异常


在开始新活动之前,请尝试执行更新

一些代码片段。请提供产生此行为的代码。我添加了finish方法来结束此活动,只是尝试看看会发生什么,但它不会结束。至于更新方法,我甚至试着在开始新的活动之前使用它,但它不起作用。在调用startActivity后放置它,会打开新活动,但它会在1秒后返回到此活动。若我删除启动活动,它将像往常一样在循环中运行。只有当我对更新行进行注释时,应用程序才能正常运行。或者它只是在循环中运行
new CountDownTimer(5000, 1000) {

        @Override
        public void onTick(long l) {
            roundTimerView.setText(String.valueOf(counter));
            counter--;
        }

        @Override
        public void onFinish() {
            
            newPlayerData.cards = cards;

            GamePage.this.finish();

            Intent intent = new Intent(GamePage.this,NextRoundReady.class);
            Bundle bundle = new Bundle();
            bundle.putString("USERNAME",Username);
            bundle.putString("ROOMID",RoomID);
            intent.putExtras(bundle);
            startActivity(intent);

            cr.document(RoomID).update(Username,newPlayerData);
        }
    }.start();