내 Android 애플리케이션 사용자는 가져온 데이터로 데이터베이스를 채우고 미리 정의 된 복잡한 SQL 쿼리를 수행 할 수 있습니다. 일부 데이터 패턴에서는 검색어가 매우 오래 걸리며 (HTC Hero에서는 분 이상), 일반적인 사용은 10-15 초를 초과하지 않습니다.안드로이드 : 취소/중단/보류중인 SQLite 쿼리 중단 방법?
Android에서 보류중인 SQLite 쿼리를 취소 할 수있는 방법이 있습니까? 타임 아웃이 좋을지라도 부분 결과는 필요하지 않습니다. 내에서 쿼리를 수행하고 있습니다 AsyncTask.doInBackground()
최적화 된 쿼리 또는 앱 로직을 변경하는 것이 가장 좋지만,이 경우 결과는 사용자 지식에 따라 달라 지므로 문제가되는 패턴을 입력하는 사람들을 돕고 싶습니다.
의 몇 가지 방법으로 전달 될 수
android.os.CancellationSignal
를 사용하여 SQLite는에서 실행중인 쿼리를 취소 할 수 있습니다. AsyncTask 플로우가'onCancelled()'를 통해 반환되기 때문에'doInBackground()'의 코드는 실제로 그대로 남아 있지만, 커서는 여전히'moveToFirst()'에서 멈추고 전체 CPU를 빨아들입니다. SQLiteDatabase 나 SQLiteOpenHelper를 닫으려고했지만'moveToFirst()'가 끝날 때까지이 객체에 대한 호출이 실행을 차단합니다. 그리고 커서에는 "취소"방법이 없습니다. – tomash그래, 고마워, 그렇지 않을 거라 생각 했어. – WarrenFaith