当前位置: 首页 > 知识库问答 >
问题:

代码被推送到主线程,如何修复?

班展
2023-03-14

即使当我退出活动并转到另一个活动时,此代码仍然有效。为了理解这一点,我去了另一个活动,删除了Firebase中的路径,由于该路径不再存在,应用程序崩溃了。我想在退出活动时禁用此代码,我该怎么做?

private void addRoomEventListener() {
        messageRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                if (role.equals("host:")) {
                    if (snapshot.getValue(String.class).contains("guest:")) {
                        step.setEnabled(true);
                        Toast.makeText(DuelGame.this, "" +
                                snapshot.getValue(String.class).replace("guest:", ""), Toast.LENGTH_SHORT).show();
                    }
                } else {
                    if (snapshot.getValue(String.class).contains("host:")) {
                        step.setEnabled(true);
                        Toast.makeText(DuelGame.this, "" +
                                snapshot.getValue(String.class).replace("host:", ""), Toast.LENGTH_SHORT).show();
                    }
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                messageRef.setValue(message);
            }
        });
    }

共有1个答案

胡璞瑜
2023-03-14

您可以保存addValueEventLister,然后在切换到另一个活动或当前活动即将完成时(通常在onPause()或onStop()中)调用一个变量,

dbref.removeEventListener(yourListener);
 类似资料:
  • 怎么修这个东西?我需要“Karetski”用户名而不是“Pavelmetsko”

  • 这不是如何配置主题选项的副本,从这样的答案中可以清楚地看出。 我想修改或调整当前设置,意思是:我想加载当前配置的内容。例如,当前为配置的值,以便能够稍微调整它,比如使颜色更亮。 当我在中加载此键时,我看到默认为红色(),这显然不是主题所拥有的。 我知道我可以 1) 打开 2) 找到设置和 3) 复制/粘贴我的用户设置。但我正在寻找一种更友好/更简单的方法。 有没有更友好/更简单的方法?如何在我的用

  • 1、可以用定时器定时推送数据 require_once __DIR__ . '/Workerman/Autoloader.php'; use WorkermanWorker; use WorkermanLibTimer; $worker = new Worker('websocket://0.0.0.0:1234'); // 进程启动后定时推送数据给客户端 $worker->onWorkerSt

  • 我不知道如何修复它(我可以更改我所有的代码) 太感谢你们了!

  • 问题内容: 这是一个普遍的Java问题,而不是Android的第一个问题! 我想从二级线程的上下文中了解如何在主线程上运行代码。例如: 这类事情-我意识到我的示例有点差,因为在Java中,您不需要进入主线程即可打印出某些内容,并且Swing也具有事件队列- 但在一般情况下,您可能需要在后台线程的上下文中,在主线程上运行Runnable。 编辑:为了进行比较-这是我在Objective-C中的做法:

  • 当我做一个,我得到我的分支: 当我尝试推送git时,我得到: 当我检查分支时,它不在那里: 我该如何解决这个问题?