Tasks.await()在预期时未返回

时间:2017-10-02 21:47:28

标签: android multithreading firebase firebase-realtime-database

我正在尝试将数据保存到Firebase RealtimeDatabase中。 保存的过程很好并且效果很好,但我很好奇我的想法:强制.setValue操作进入同步结构。我知道,那种方式并不是最好的方式,但无论如何,我都想尝试一下。 所以我提出了这个代码:

Thread t1 = new Thread(){
        public void run(){
            try {
                Tasks.await(databaseReference.child("someChild").setValue(someObject));
            } catch (ExecutionException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };
    t1.start();
    try {
        t1.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("finished");
}

理论上,该代码段旨在首先设置数据库中的值,然后等待完成(通过Tasks.await()),然后打印出**在那之后*线"完成"。 我将Tasks.await() - 命令包装在第二个线程中,因为当我不知道时,我得到一个异常,其中的内容类似于"在主应用程序线程中不能调用Tasks.await()&# 34。

但是当我运行整个事情时,它只会卡在t1.join();。 当我删除t1.join(); - 语句时,一切正常,但第二个线程(t1)在"完成" -output存在之前尚未完成。我知道为什么会这样,但我仍然对这个问题的解决方案感兴趣。

0 个答案:

没有答案