我制作了自己的contentprovider,通过多次插入,一次放入了大量数据。
应用程序将从外部源接收数据,此时我将收到大约30个项目(因此每次插入30次)。
现在我注意到这需要很多宝贵的时间(大约3秒,每次插入100毫秒)。
如何提高contentprovider的速度?我已经试着把它们都塞进大包里了,但最多需要5秒钟。
提前谢谢。

最佳答案

insertBulk中的所有内容打包到事务中。
例子:

    SQLiteDatabase sqlDB = mDB.getWritableDatabase();
    sqlDB.beginTransaction();
    try {

        for (ContentValues cv : values) {
            long newID = sqlDB.insertOrThrow(table, null, cv);
            if (newID <= 0) {
                throw new SQLException("Failed to insert row into " + uri);
            }
        }
        sqlDB.setTransactionSuccessful();
        getContext().getContentResolver().notifyChange(uri, null);
        numInserted = values.length;
    } finally {
        sqlDB.endTransaction();
    }

bulkInsert默认情况下不使用事务,因为默认行为只调用insert
重写此项以处理插入一组新行的请求,否则默认实现将遍历这些值并对每个值调用insert(uri,contentvalues)。

07-26 04:53