【发布时间】:2016-01-14 04:01:24
【问题描述】:
这不是我第一次构建 ContentProviders。但这是我第一次遇到这个问题,我不知道如何解决它。
我做了一个批量插入,它返回计数为 4。然后我立即对所有内容进行查询,查询返回计数 0。我不会删除任何地方。有什么想法可能导致这种情况吗?
就好像输入到 ContentProvider 的数据莫名其妙地丢失了一样。其实这里是bulkInsert代码
@Override
public int bulkInsert(Uri uri, ContentValues[] values) {
final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
final String tableName = DogContract.DogEntry.TABLE_NAME;
db.beginTransaction();
int count = 0;
try {
for (ContentValues value : values) {
long id = db.insert(tableName, null, value);
if (0 < id) count++;
Timber.d("insertion id: %s",id);
}
} finally {
db.endTransaction();
}
Timber.d("successful bulk insert for count: %s",count);
getContext().getContentResolver().notifyChange(uri, null);
return count;
}
还有查询
private Cursor getAllDogs(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
Timber.d("Call to get all getAllDogs");
SQLiteDatabase db = mOpenHelper.getReadableDatabase();
return db.query(DogContract.DogEntry.TABLE_NAME, null, null, null, null, null, null);
}
【问题讨论】:
标签: android android-contentprovider bulkinsert android-contentresolver