2014-07-22 5 views
9

कई बार (5-10 बार) के लिए नीचे कोड कॉल करने के बाद, SaveCallback के लिए किया गया() विधि आग नहीं है और पूरा एप्लिकेशन अटक गया है। ऐसा लगता है कि यह अनुरोध खंडहर अनुरोध कतार है और सभी और प्रश्न उनके कॉलबैक को भी आग नहीं देते हैं। कॉलबैक और लॉग में कोई त्रुटि नहीं है। "सहेजने से पहले" - लॉग में प्रदर्शित, जबकि "सहेजा" - नहीं था।saveInBackground कॉलबैक काम नहीं करता

क्या मुझे पार्स मूल्य निर्धारण अनुबंध बदलने या किसी भी तरह अपना कोड बदलने की आवश्यकता है?

Log.d("MESSAGE OBJECT", " BEFORE SAVING"); 
    messageParseObject.saveInBackground(new SaveCallback() { 
     @Override 
     public void done(final ParseException e) { 
      Log.d("MESSAGE OBJECT", " SAVED"); 
      if (e != null){ 
       completitionCallback.error(e); 
       return; 
      } 

      chatObject.put(ModelConstants.LAST_MESSAGE_KEY, messageParseObject); 
      chatObject.getRelation(ModelConstants.MESSAGES_KEY).add(messageParseObject);     
      chatObject.saveInBackground(new SaveCallback() { 
       @Override 
       public void done(ParseException e) { 
        Log.d("CHAT OBJECT", " SAVED"); 
        if (e == null) 
         completitionCallback.success(); 
        else 
         completitionCallback.error(e); 
       } 
      }); 
     } 
    }); 
+0

संदेशपर्सऑब्जेक्ट क्या है? अनुलेख आम तौर पर किसी अन्य के अंदर 'saveInBackground' को कॉल करना नियमित बात नहीं है। यह समस्या का कारण हो सकता है। –

+0

@VladimirLichonos messageParseObject प्रकार ParseObject है, इसमें संदेश निर्माता को सरणी और सूचक है। पहले _saveInBackground_ में मैं चैट का संदेश सहेजता हूं, अगले में मैं अपना चैट ऑब्जेक्ट अपडेट करता हूं (संबंध में संदेश जोड़ रहा हूं)। तो सबसे पहले मुझे संदेश सहेजने की ज़रूरत है, और इसे सहेजने के बाद मैं chatObject को अपडेट करता हूं। – PaulKh

उत्तर

10

इसका सामना करना पड़ा और वास्तव में मुझे पागल कर दिया। यह है जो मैंने पाया। यदि कक्षा पहले से ही Parse.com में बनाई गई है, भले ही कोई छोटी विसंगति बचाई हो, तो इनबैकग्राउंड बचाएं और सहेजें बिना किसी त्रुटि के विफल रहता है।

सबसे अच्छा तरीका, यदि ऐसा होता है तो Parse.com में बनाई गई कक्षा को हटाना है और एंड्रॉइड एसडीके इसे पहले आमंत्रण में स्वचालित रूप से कॉल करने दें।

कम से कम मेरे लिए यह चाल है।

+0

यह वास्तव में मेरी समस्या थी। मैंने सोचा था कि ParseObject.create() हमेशा एक नई वस्तु (उदाहरण के लिए एक नई ऑब्जेक्ट आईडी के साथ) बनाएगा, लेकिन गारंटी है कि कम से कम एक कॉलम – Entreco

+0

द्वारा अनन्य होना चाहिए, बस मेरी कक्षा के नाम का नाम बदलकर एक ही समस्या को ठीक करें एंड्रॉइड के रूप में मैं अपना डेटा खोने का जोखिम नहीं उठा सकता। क्या कोई इस बात की पुष्टि कर सकता है कि पार्स देव टीम के लिए एक बग उठाया गया है ?? मेरे दिमाग में एक गंभीर मुद्दा है क्योंकि यह पूरी तरह से कार्यक्षमता तोड़ता है, कम से कम कॉलबैक में त्रुटि प्राप्त करना अधिक स्वीकार्य होगा। – cYrixmorten

+1

इसे बग के रूप में रिपोर्ट किया जाना चाहिए? सही? मैं पिछले 2 घंटों से इसे समझने की कोशिश कर रहा हूं, और मुझे लगता है कि बहुत से लोगों को एक ही समस्या हो सकती है। –

संबंधित मुद्दे