Androidでsqliteデータベースを使用するアプリを開発しています.最近、データベースの同時アクセスに関連していると思われるクラッシュが頻繁に発生していますが、db例外には言及されていません..
エラーは次のとおりです。
09-15 15:25:45.672 195-1476/system_process V/ActivityManager﹕ Record #1 ActivityRecord{a52ecf58 u0 com.pauloslf.efatura/.MenuInicial}: app=ProcessRecord{a5317d60 0:com.pauloslf.efatura/u0a10049}
09-15 15:25:45.672 195-1476/system_process I/ActivityManager﹕ Removing activity ActivityRecord{a52ecf58 u0 com.pauloslf.efatura/.MenuInicial} from stack at 1: haveState=false stateNotNeeded=false finishing=true state=PAUSING
java.lang.RuntimeException: here
at com.android.server.am.ActivityStack.removeHistoryRecordsForAppLocked(ActivityStack.java:4249)
at com.android.server.am.ActivityManagerService.handleAppDiedLocked(ActivityManagerService.java:3015)
at com.android.server.am.ActivityManagerService.appDiedLocked(ActivityManagerService.java:3085)
at com.android.server.am.ActivityManagerService$AppDeathRecipient.binderDied(ActivityManagerService.java:897)
at android.os.BinderProxy.sendDeathNotice(Binder.java:470)
at dalvik.system.NativeStart.run(Native Method)
09-15 15:25:45.672 195-490/system_process W/InputDispatcher﹕ channel 'a5239e68 com.pauloslf.efatura/com.pauloslf.efatura.MenuInicial (server)' ~ Consumer closed input channel or an error occurred. events=0x9
09-15 15:25:45.672 195-490/system_process E/InputDispatcher﹕ channel 'a5239e68 com.pauloslf.efatura/com.pauloslf.efatura.MenuInicial (server)' ~ Channel is unrecoverably broken and will be disposed!
09-15 15:25:45.672 195-1476/system_process V/ActivityManager﹕ No result destination from ActivityRecord{a52ecf58 u0 com.pauloslf.efatura/.MenuInicial}
09-15 15:25:45.676 119-119/? D/Zygote﹕ Process 3287 terminated by signal (11)
09-15 15:25:45.684 195-1915/system_process W/InputDispatcher﹕ Attempted to unregister already unregistered input channel 'a5239e68 com.pauloslf.efatura/com.pauloslf.efatura.MenuInicial (server)'
シングルトンを使用して db クラスにアクセスしています。
private static FacturasDB faturasdb = null;
public static FacturasDB getInstance(Context context) {
if (faturasdb == null) {
faturasdb = new FacturasDB(context);
}
return faturasdb;
}
問題を再現する最も簡単な方法は、メイン アクティビティ (バックグラウンドで db アクセスを行う) で開始された asynctask が実行されているときに、db も使用する別のアクティビティに移動することです。
この問題が発生する理由は何ですか?
よろしくお願いします!