0

Я писал приложение для Android, используя parse-server как бэкэнд в качестве сервиса для моего приложения. Когда я запрашиваю класс, чтобы получить объекты с моего сервера, я делаю это с помощью ParseQuery.findInBackground(), а затем получения обратного вызова, как это:Какой поток мы получаем, когда возвращаем вызов при вызове findInBackground() в API-интерфейсе андроида.

query.findInBackground(new FindCallback<Shruti>() { 
      @Override 
      public void done(List<Shruti> objects, ParseException e) { 
      ................... 
      ................... 
     }); 

Мой вопрос заключается в том, что на какой поток я получаю обратный вызов по методу done(). Это все тот же самый поток, который запускается при вызове findInBackground() или это нить, из которой я звонил findInBackground()? Мне интересно, потому что, если я хочу сделать некоторую обработку с извлеченными объектами в фоновом режиме, мне нужно снова вызвать соответствующий метод «делать в фоновом режиме» или, поскольку обратный вызов, который я получаю, уже находится в другом потоке, я можно просто вызвать методы synchronous (например, ParseQuery.find() является синхронной опцией для ParseQuery.findInBackground()), предполагая, что я все еще в фоновом потоке?

ответ

1

Я думаю, что метод обратного вызова будет выполняться в потоке, который вы использовали для вызова findInBackground, поэтому, если это поток пользовательского интерфейса, и у вас есть больше сети, вам нужно будет использовать другие потоки фона. Вы можете проверить, вызвав синхронный метод и посмотреть, есть ли у вас NetworkOnMainThreadException (на достаточно недавнем устройстве).

+0

Я отмечаю это правильно, как подтверждено Fosco на https://twitter.com/newFosco/status/767766599499599872?cn=cmVwbHk%3D. Всем спасибо! – Swapnil

Смежные вопросы