Бесконечные зависания в AsynsCall
У меня есть функция, которая пытается получить данные из таблицы "Вопрос" Backendless:
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()");
}
Однако, это висит на сообщении журнала "Inside try()". Как я могу узнать больше об этом и отладить его?
1 ответ
Backendless здесь не висит, похоже на проблему с семафором. Установите точку останова внутри handleResponse и посмотрите, дойдет ли выполнение до этой точки.