プログラムでブラウザの履歴を読み取ろうとしています。コードは正常に動作しますが、コードで「android.database.sqlite.SQLiteException: データベースがロックされています: retrycount exceeded」が発生することがあります。私のアプリでは、このコードは複数のスレッドからアクセスされるため、そのメソッドをsynchronized
バックグラウンドからブラウザーの履歴を読み取るように変更しました。今私のアプリでは、このメソッドはsynchronized
.
これが私のコードです:
String[] proj = new String[] { Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL, Browser.BookmarkColumns.DATE, Browser.BookmarkColumns.VISITS };
mCur = context.getContentResolver().query(Browser.BOOKMARKS_URI, proj, null, null, null);
if(mCur != null)
{
// Processing on cursor
}
しかし、いつブラウザデータベースが他のアプリからアクセスされ、同時に私のアプリがブラウザデータベースにアクセスするのかを知りたいのですが、この例外が発生します。はいの場合、このケースを処理してこの例外を回避するにはどうすればよいですか。