Я реализую библиотечную функцию, которая выполняет запрос в базе данных, и этот запрос может когда-то быть достаточно длинным, чтобы вызвать предупреждение StrictMode
для длительной операции в потоке пользовательского интерфейса.Ошибка Android StrictMode для длинного запроса в потоке пользовательского интерфейса
Мне было интересно, что бы это был правильный шаблон для применения здесь? Как я могу обернуть асинхронный вызов в функции, результат которой будет синхронным?
Функция получает имя таблицы и столбец и возвращает логическое значение, используя обычные функции Cursor
/resolver.query pattern
. При необходимости я могу добавить код.
Спасибо большое, Andrea
AsyncTask не может быть осуществимым, потому что основной метод просто выйдет, не дожидаясь завершения AsyncTask. Я имею в виду 'логическое runIfTrue (Runnable обратного вызова) { новый AsyncTask() {(...) onPostExecute {если (результат == TRUE) {// запустить Runnable обратного вызова}}}}' –
(Комментарий может больше не редактируем) Затем я выполнил бы асинтаску, и он, в свою очередь, запустил бы обратный вызов в postExecute. –
@AndreaDellaCorte - вам нужно разделить свой «основной метод», чтобы часть, которая следует за получением результата из базы данных, выполнялась в методе 'onPostExecute'' AsyncTask' (или в методе, называемом 'onPostExecute'). –