在 Parse android API 上调用 findInBackground() 时,我们在哪个线程上得到回调
Which thread do we get the call back on when calling findInBackground() on Parse android API
我一直在编写一个 android 应用程序,使用 parse-server
作为我的应用程序的后端即服务。当我查询 class 以从我的服务器获取对象时,我使用 ParseQuery.findInBackground()
然后接收这样的回调:
query.findInBackground(new FindCallback<Shruti>() {
@Override
public void done(List<Shruti> objects, ParseException e) {
...................
...................
});
我的问题是我在哪个线程上收到 done()
方法的回调。它仍然是通过调用 findInBackground()
启动的线程还是我调用 findInBackground()
的线程?我对此很好奇,因为如果我也想在后台对检索到的对象进行一些处理,我是否需要再次调用相应的 do-in-background 方法,或者因为我得到的回调已经在不同的线程中,我假设我仍在后台线程中,可以只调用 synchronous
方法(例如,ParseQuery.find()
是 ParseQuery.findInBackground()
的同步选项)吗?
我认为回调方法将在您用来调用 findInBackground
的线程上执行,所以如果那是 UI 线程并且您有更多的网络要做那里,您将需要使用其他后台线程。您可以通过调用同步方法来验证并查看是否获得 NetworkOnMainThreadException
(在足够新的设备上)。
我一直在编写一个 android 应用程序,使用 parse-server
作为我的应用程序的后端即服务。当我查询 class 以从我的服务器获取对象时,我使用 ParseQuery.findInBackground()
然后接收这样的回调:
query.findInBackground(new FindCallback<Shruti>() {
@Override
public void done(List<Shruti> objects, ParseException e) {
...................
...................
});
我的问题是我在哪个线程上收到 done()
方法的回调。它仍然是通过调用 findInBackground()
启动的线程还是我调用 findInBackground()
的线程?我对此很好奇,因为如果我也想在后台对检索到的对象进行一些处理,我是否需要再次调用相应的 do-in-background 方法,或者因为我得到的回调已经在不同的线程中,我假设我仍在后台线程中,可以只调用 synchronous
方法(例如,ParseQuery.find()
是 ParseQuery.findInBackground()
的同步选项)吗?
我认为回调方法将在您用来调用 findInBackground
的线程上执行,所以如果那是 UI 线程并且您有更多的网络要做那里,您将需要使用其他后台线程。您可以通过调用同步方法来验证并查看是否获得 NetworkOnMainThreadException
(在足够新的设备上)。