从Sqlite游标创建Pojo类花费了太多时间

时间:2016-04-20 08:04:06

标签: android performance android-sqlite android-recyclerview database-performance

我的查询正在<执行3毫秒。但问题是,我正在从查询执行中获得的游标中创建一个pojo类对象。此字段的对象创建和设置值花费的时间超过140毫秒。 Pojo类有大约36个字段。有任何解决这个问题的建议。?

由于

2 个答案:

答案 0 :(得分:0)

您要实例化多少个对象? 36个领域看不太多。

如果你有很多对象,你可以在一个单独的线程中实例化它们。当然,您必须设置某种回调以找出何时加载所有内容

答案 1 :(得分:0)

我知道c.getColumnIndex()方法需要更多时间。我知道加速事情的最佳方法如下:

Cursor c = null;
try {
    c = db.query(......);
    if(c != null) {

        int channelIdIndex = c.getColumnIndex(OptimizedMessage.CHANNEL_ID);
        int clientIdIndex = c.getColumnIndex(OptimizedMessage.CLIENT_ID);

        while (c.moveToNext()) {
            OptimizedMessage newMessage = new OptimizedMessage();
            newMessage.setChannelId(c.getLong(channelIdIndex));
            newMessage.setClientId(c.getLong(clientIdIndex));

            messages.add(newMessage);
        }
    }
} finally {
    if (c != null) {
        c.close();
    }
}

您可以看到c.getColumnIndex()方法仅使用一次。