在我的一个Android应用程序中,
- 我在另一个进程中运行SyncAdapter
,它实际上从sqlite db查询数据并将数据推送到服务器。
- SqliteDatabase
是单例,并且整个应用程序中只有它的实例。
但是,在我安装应用程序之后,正在创建两个SqliteDatabase
个实例。一个用于我的应用程序,一个用于后台进程(同步)。这样就创建了两个实例,它们在同一个数据库上运行。
在这些情况下,如果两个实例一次尝试插入db,则其中一个请求将抛出错误。
当有多个进程时,这是处理(CRUD db)的正确方法吗?
创建单个db实例的代码
public class SqliteStorage extends SqliteOpenHelper {
public SqliteStorage(Context context) {
super(context, DB_NAME, null, DB_VERSION);
db = getWritableDatabase();
db.setVersion(DB_VERSION);
}
public static synchronized SqliteStorage getInstance() {
if(mDBStorage == null) {
mDBStorage = new SqliteStorage(MyApplication.getContext());
}
return mDBStorage;
}
}