2015-03-02 61 views
1

我有一個將數據保存到parse.com的代碼,問題是,它沒有等到saveInBackground完成,所以它總是返回false(即沒有錯誤),即使發現了錯誤。請幫忙。感謝如何使函數等待parse.com的saveInBackground結果? (在android中)

Boolean result; 
public boolean insertToParseAndDB(String payType, int creditsLeft){ 
    result = false; 
    ParseObject AudioRec = new ParseObject("Credit"); 
     AudioRec.put("payType", payType); 
     AudioRec.put("creditsLeft", creditsLeft); 
     AudioRec.put("isActive", true); 
     AudioRec.put("subsType", 2); 
     AudioRec.put("UserId", ParseUser.getCurrentUser()); 
     { 
     AudioRec.saveInBackground(new SaveCallback() { 
      @Override 
      public void done(ParseException ex) { 
       if (ex == null){ 
        result = true; 
       } 
       else{ 
        result = false; 
        Log.e("",ex.getLocalizedMessage()); 
       } 
      } 
     }); 
     } 
    return result; 
} 
+0

您是否收到ParseException的? – 2015-03-02 06:21:30

+0

沒有..只是爲了趕上將來的ParseExceptions – user3517855 2015-03-02 06:23:24

+0

做你想做的事情在做方法 – virendrao 2015-03-02 06:41:36

回答

2

它不等待saveInBackground完成,所以它總是返回 假

因爲saveInBackground在後臺線程中運行,並提供回調方法,當完成後臺任務通知UI線程。

因此,使用done方法來執行下一個任務。

如何使函數等待parse.com的saveInBackground結果?

使用ParseObject.save或在主線程上運行,等待選項不能完成ParseObject.saveAll可能凍結UI或顯示ANR對話框

+0

bleepin糟透了。在更新UI之前,例如在DM聊天中發送消息之後,有很多用例需要等到ParseObject保存在後臺線程中。你知道替代方案是什麼嗎? – santafebound 2017-09-14 19:32:51