데이터베이스에서 쿼리를 수행하는 라이브러리 함수를 구현 중이며이 쿼리는 UI 스레드에서 장시간 작업 할 때 경고 메시지가 표시 될 정도로 길기도합니다.UI 스레드에서 긴 쿼리에 대한 StrictMode 오류가 발생했습니다.
여기에 적용 할 올바른 패턴이 무엇일까요? 어떻게 결과가 동기적인 것으로 예상되는 함수에서 비동기 호출을 래핑 할 수 있습니까?
이 함수는 테이블 이름과 열을 가져오고 일반 Cursor
/resolver.query pattern
기능을 사용하여 부울 값을 반환합니다. 필요한 경우 코드를 추가 할 수 있습니다.
덕분에 많이, 안드레아
주 메서드가 AsyncTask가 완료 될 때까지 기다리지 않고 끝내기 때문에 AsyncTask를 실행할 수 없습니다. 나는' –
(코멘트 할 수 '부울 runIfTrue (Runnable를 콜백) {{// Runnable를 콜백을 실행}}} 새로운 AsyncTask를() {(...) onPostExecute {경우 (== true의 결과를)} 생각하고 't은 더 이상 편집 할 수 없습니다.) asynctask를 실행하면 postExecute에서 콜백을 실행합니다. –
@AndreaDellaCorte - 데이터베이스에서 결과를 얻는 다음 부분이 AsyncTask의 onPostExecute 메소드 (또는 onPostExecute에 의해 호출 된 메소드)에서 실행되도록 "main method"를 분할해야합니다.). –