2016-07-05 3 views
0

でハング:はBackendless私はBackendless「質問」テーブルからデータを取得しようとする機能を持っているAsynsCall

private static void fetchQuestionsBase() { 
      final Semaphore s = new Semaphore(0); 
      Log.d(TAG,"Inside fetch()"); 
      AsyncCallback<BackendlessCollection<Question>> callback = new AsyncCallback<BackendlessCollection<Question>>() { 
       @Override 
       public void handleResponse(BackendlessCollection<Question> response) { 
        Log.d(TAG,"Success in fetching the database"); 
        s.release(); 
        dataHolder.q = response.getData(); 
       } 
       @Override 
       public void handleFault(BackendlessFault fault) { 
        Log.e(TAG,"Failure: "+fault.getMessage()); 
        s.release(); 
       } 
      }; 
      Backendless.Data.of(Question.class).find(callback); 
      Log.d(TAG,"After Data.of..."); 
      try { 
       Log.d(TAG,"Inside try()"); 
       s.acquire(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      Log.d(TAG,"After acquire()"); 
     } 

しかし、これは「インサイドてみてください()」ログメッセージをにハングアップします。これについてもっと学び、それをデバッグするにはどうすればいいですか? Backendlessがここにハングしない

答えて

0

、それがセマフォに問題があるように見えます。 handleResponseの中にブレークポイントを設定し、実行がそのポイントに到達するかどうかを確認します。

+0

ありがとうございました。私はこの問題をやや特殊な方法で解決しました。セマフォBTWなし。私が言ったように、この変更は「アドホック」なので、この質問を削除するほうが良いかもしれないと思った。 – Ilonpilaaja

+0

セマフォを避けることを提案する解決策をここに残しておきます。それは他の人にいくつかの価値があるかもしれません..ちょうど私の$ 0.02 .. –

関連する問題