웹 서비스에서 마스터 데이터를 다운로드하는 데 사용되는 비동기 작업을 확장하는 DownLoadData 클래스가 있습니다. SQLite 데이터베이스에는 10 개의 마스터 테이블이 있으며 각각에는 별도의 웹 서비스 호출이 필요합니다. 따라서 DownLoadData 작업에는 10 개의 스레드가 있습니다. 각각은 각각의 웹 서비스를 호출하고 데이터를 수신 한 다음 해당 테이블에 삽입합니다.JellyBean에서 오류가 발생하는 SQLite에서 트랜잭션 사용
_onPreExecute()_
에서 거래를 시작하고 모든 스레드가 완료되었는지 확인한 후 _onPostExecute()_
에서 거래를 종료합니다.
문제는이 접근법이 ICS 버전까지 완벽하게 작동한다는 것입니다. JellyBean에서는 작동하지 않는 것 같습니다. 응용 프로그램은 단지이 로그 캣 메시지와 함께 60 초마다 응답 : 나는 또한 같은 DB 인스턴스가 모든 스레드를 건너 사용하고
public LocalDatabase beginTransact() {
mdbHelper = new DatabaseHelper(ctx);
mdb = mdbHelper.getWritableDatabase();
execSQL("BEGIN");
return this;
}
public void endTransact() {
execSQL("END");
mdbHelper.close();
}
:
04-02 14:53:23.263: W/SQLiteConnectionPool(1409): The connection pool for database '/data/data/com.c2info.liveorder/databases/DB' has been unable to grant a connection to thread 117 (AsyncTask #2) with flags 0x1 for 30.010002 seconds.
04-02 14:53:23.263: W/SQLiteConnectionPool(1409): Connections: 0 active, 1 idle, 0 available.
내가 시작하고이 같은 트랜잭션을 종료.