使用synchronized块等待结果会导致App冻结

时间:2018-05-18 21:41:59

标签: java android task

我有一个对象Task(请参阅com.google.android.gms.tasks

我需要等到它在返回结果之前完成所有操作。 所以我试图创建一个虚拟对象

final static Object lock=new Object();

用作锁定,我在方法中添加了

synchronized(lock){
    lock.wait();
}

这样它就不会在任务完成之前返回值

在任务的lock.notifyAll侦听器中调用onSuccess()(当任务正确结束时调用此侦听器)。

但不幸的是整个App冻结了。

为什么会这样?

我应该如何处理任务完成?

(请注意,任务不像AsyncTask

1 个答案:

答案 0 :(得分:0)

有一种简单的方法可以同步运行任务。

Tasks.await(yourTask);

但要确保在后台线程中调用它。