2014-12-09 3 views
0

ObjectID를 기반으로 parse.com 개체를 쿼리하려고하면 항상 stackoverflowexception이 발생합니다. 다른 사람이이 문제가 있거나이 예외를 피할 수있는 해결 방법이 있습니까?query.getInBackground - parse.com android SDK에서 StackoverflowException 가져 오기

1) 다운로드 : 어떤 도움을 주시면 감사하겠습니다 :)

단계 재현하는

-

는 (그러나 예외는 여전히 존재 나는 SDK를 다른 버전, 다른 parse.com 계정을 시도) 샘플 안드로이드 스타터 프로젝트
2) 이클립스를 사용하여 기존 프로젝트로 가져 오기
3) ParseApplication.java에서 앱 ID를 입력하십시오.
4) ParseStarter의 onCreate 메소드를 수정하십시오 ProjectActivity.java :
ParseAnalytics.trackAppOpened (getIntent()); 행은 바로 문서에서하는 간단한 쿼리 추가 :

ParseQuery<ParseObject> query = ParseQuery.getQuery("GameScore"); 
    query.getInBackground("xWMyZ4YEGZ", new GetCallback<ParseObject>() { 
     public void done(ParseObject object, ParseException e) { 
     if (e == null) { 
      // object will be your game score 
     } else { 
      // something went wrong 
     } 
     } 
    }); 

5) 장치에서 실행하고 (최대 5-10)
6) 결과 몇 초 동안 기다리 :

12있는 StackOverflowException을 07 13 : 40 : 27.298 : I/dalvikvm (690) : threadid = 1 : Lcom/parse/starter/ParseStarterProjectActivity $ 1 호출에 스택 오버플로가 발생했습니다. VLL
12-07 13 : 40 : 27.298 : I/dalvikvm (690) : 메서드는 12 + 20 + 12 = 44 바이트가 필요하고 fp는 0x410aa30c (12가 왼쪽)
12-07 13 : 40 : 27.298 : I/dalvikvm (690) : 스택 끝 확장 (0x410aa300에서 0x410aa000)
12-07 13 : 40 : 27.298 : I/dalvikvm (690) : 축소 스택 (0x410aa300까지, curFrame은 0x410ace20)
12-07 13 : 40 : 27.298 : D/AndroidRuntime (690) : 종료 VM
12-07 13 : 40 : 27.278 : D/dalvikvm (690) : threadid = 1 : catch되지 않은 예외 (그룹 = 0x40015560)로 종료하는 스레드
12-07 13 : 40 : 27.378 : D/dalvikvm (690) : GC_CONCURRENT D/dalvikvm (690) : GC_FOR_MALLOC은 284K, 50 %는 무료 3130K/6215K, 외부 410K는 무료로 307K, 50 % 무료 3050K/6023K, 외부 410K/517K, 일시 중지 된 2ms + 1ms
12-07 13:40:27.418 :/517K, 일시 중지됨 14ms
12-07 13 : 40 : 27.428 : E/AndroidRuntime (690) : 치명적인 예외 : 주
12-07 13 : 40 : 27.428 : E/And roidRuntime (690) java.lang.StackOverflowError의
12-07 13 : 40 : 27.428 : E/AndroidRuntime (690) com.parse.starter.ParseStarterProjectActivity $ 1.done (ParseStarterProjectActivity.java:1)
12에서 07 13 : 40 : 27.428 : E/AndroidRuntime (690) : com.parse.starter.ParseStarterProjectActivity $ 1.done (ParseStarterProjectActivity.java:1)
12-07 13 : 40 : 27.428 : E/AndroidRuntime (690) : com.parse.starter.ParseStarterProjectActivity $ 1.done (ParseStarterProjectActivity.java:1)
12-07 13 : 40 : 27.428 : E/AndroidRuntime (690) : com.parse.starter.ParseStarterProjectActivity $ 1.done (ParseStarterProjectActivity. java : 1)
12-07 13 : 40 : 27.428 : E/AndroidRuntime (690) : com.parse.starter.ParseStarterProjectActivity $ 1.done (ParseStar terProjectActivity.java:1)
12-07 13 : 40 : 27.428 : E/AndroidRuntime (690) com.parse.starter.ParseStarterProjectActivity $ 1.done (ParseStarterProjectActivity.java:1)에서
12-07 13시 40분 : 27.428 : E/AndroidRuntime (690) : com.parse.starter.ParseStarterProjectActivity $ 1.done (ParseStarterProjectActivity.자바 : 1)

추가 참고 : 널 콜백 작품과

  • getInBackground, 충돌이 수행 부분에 발생하는 콜백.
  • SDK는 최신 1.7.1이지만 1.5와 동일한 결과가 있습니다.
  • 실제 및 가짜 클래스 이름, 개체 ID 및 동일한 결과를 사용하여 쿼리를 시도했습니다.
  • 앱 ID를 다른 앱의 앱 ID로 변경하려고 했는데도 동일한 결과가 나타납니다.
  • 빌드 대상은 아무 것도 아닌 동일한 결과 일 수 있습니다.
  • 장치가 테스트 시뮬레이터
  • 충돌 : 소니 엑스 페리아, HTC 산불
  • 이클립스 4.4.1
+0

당신의'ParseStarterProjectActivity에서 전체 소스 코드를 제공하십시오 사용 .java' – gio

답변

0

봅니다 findinbackground

 ParseQuery<ParseUser> query = ParseUser.getQuery(); 
      query.whereNotEqualTo("application", null); 
      query.whereContains("application", "My App"); 
      query.findInBackground(new FindCallback<ParseUser>() { 

       @Override 
       public void done(List<ParseUser> users, ParseException e) { 

      }}); 
관련 문제