2016-08-22 15 views
0

我一直在編寫一個使用parse-server作爲後端作爲我的應用程序的服務的Android應用程序。當我查詢類從我的服務器獲取的對象,我把它用ParseQuery.findInBackground()再收到這類回調做:當我們在Parse android API上調用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()的同步選項),假設我仍處於後臺線程中?

回答

1

我認爲回調方法會在你用來調用findInBackground的線程上執行,所以如果這是UI線程,並且你有更多的網絡去做,那麼你需要使用其他後臺線程。您可以通過調用同步方法進行驗證,然後查看是否得到NetworkOnMainThreadException(在最新的設備上)。

+0

我將此標記爲正確,由Fosco驗證https://twitter.com/newFosco/status/767766599499599872?cn=cmVwbHk%3D。感謝大家! – Swapnil

相關問題