我一直在使用parse-server
编写一个Android应用程序作为后端作为我的应用程序的服务。当我查询一个类来从我的服务器获取对象时,我使用ParseQuery.findInBackground()
然后接收这样的回调:
query.findInBackground(new FindCallback<Shruti>() {
@Override
public void done(List<Shruti> objects, ParseException e) {
...................
...................
});
我的问题是我在哪个线程上收到done()
方法的回调。它仍然是通过调用findInBackground()
启动的相同线程,还是我调用findInBackground()
的线程?我对此感到好奇,因为如果我想在后台对检索到的对象进行一些处理,我是否需要再次调用相应的do-in-back方法,或者因为我得到的回调已经在不同的线程中,我可以只调用synchronous
方法(例如,ParseQuery.find()
是ParseQuery.findInBackground()
的同步选项),假设我仍然在后台线程中?
答案 0 :(得分:1)
我认为回调方法将在您用来调用findInBackground
的线程上执行,因此,如果这是UI线程并且您有更多网络可以执行,那么您需要使用其他背景线程。您可以通过调用同步方法进行验证,看看是否得到NetworkOnMainThreadException
(在最近的设备上)。