Android sqliteopenhelper中的ANR?

Android sqliteopenhelper中的ANR?,android,multithreading,sqlite,Android,Multithreading,Sqlite,我有一个android项目,包括一些服务、警报和广播接收器,当然还有活动,所有这些都可以访问sqlite。我知道android环境只给了我们一个到进程的sqlite连接,正因为如此,我不得不在我的项目上实现singleton设计模式来使用SqliteOpenHelper。然而,当服务和接收者的数量增加时,会出现一些与并发相关的错误,所以我选择在getter方法中使用isDbLockedByCurrentThread方法。不幸的是,这导致了anr问题。在具有并发可写访问权限的android应用程序

我有一个android项目,包括一些服务、警报和广播接收器,当然还有活动,所有这些都可以访问sqlite。我知道android环境只给了我们一个到进程的sqlite连接,正因为如此,我不得不在我的项目上实现singleton设计模式来使用SqliteOpenHelper。然而,当服务和接收者的数量增加时,会出现一些与并发相关的错误,所以我选择在getter方法中使用isDbLockedByCurrentThread方法。不幸的是,这导致了anr问题。在具有并发可写访问权限的android应用程序中使用sqlite的最佳行为是什么

以下是我的dbhelper类:


您应该使用多连接。创建池并获取连接销毁连接机制。(与使用者、工作组相同)