2014-07-22 3 views
9

아래 코드를 여러 번 (5-10 회) 호출하면 SaveCallback의 done() 메소드가 실행되지 않고 전체 응용 프로그램이 멈춘 것 같습니다. 이 요청은 요청 큐가 유실되었으며 이후의 모든 쿼리는 콜백을 발생시키지 않습니다. 콜백 및 로그에 오류가 없습니다. "BEFORE SAVING"- 로그에 표시되고 "SAVED"는 표시되지 않았습니다.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

messageParseObject 란 무엇입니까? 추신. 일반적으로 다른 하나의 내부에 'saveInBackground'를 호출하는 것은 일반적인 것이 아닙니다. 이것이 문제의 원인 일 수 있습니다. –

+0

@VladimirLichonos messageParseObject는 ParseObject 유형이며 메시지 작성자에 대한 포인터와 포인터를가집니다. 처음에는 _saveInBackground_에서 채팅의 메시지를 저장하고, 다음에 채팅 객체를 업데이트합니다 (관계에 메시지 추가). 먼저 메시지를 저장해야하며 저장 한 후에는 chatObject를 업데이트합니다. – PaulKh

답변

10

나는 정말 미치게 만들었습니다. 이것이 내가 찾은 것입니다. 작은 불일치가있는 경우에도 클래스가 Parse.com에 이미 생성 된 경우 saveInBackground 및 saveEventually 오류없이 실패합니다.

가장 좋은 방법은 Parse.com에서 생성 된 클래스를 삭제하고 Android SDK가 첫 번째 호출에서 자동으로 호출하도록하는 것입니다.

적어도 나를 위해 트릭을했습니다.

+0

이것은 실제로 내가 가진 문제였습니다. 나는 ParseObject.create()가 항상 새로운 객체 (예 : 새로운 객체 ID)를 만들 것이라고 생각했지만, 적어도 하나의 열에는 고유해야한다. – Entreco

+0

내 클래스의 이름을 단순히 내 데이터를 잃어 버릴 여유가 없어서 안드로이드. 누구든지 버그가 구문 분석 팀에 제기되었는지 여부를 확인할 수 있습니까 ?? 그것이 완전히 기능을 망가 뜨 렸기 때문에 내 마음에 심각한 문제가있다. 적어도 콜백에서 에러가 발생하면 더 받아 들여질 것이다. – cYrixmorten

+1

이것은 버그로보고해야합니까? 권리? 저는 지난 2 시간 동안 이것을 알아 내려고 노력해 왔습니다. 그리고 많은 사람들이 같은 문제를 겪었을 것입니다. –

관련 문제