Android中的Firebase子事件侦听器

时间:2018-06-20 05:32:34

标签: android multithreading sqlite firebase user-interface

我有一个Firebase的ChildEventListener,在它的onChildAdded()方法中,我调用run()方法(在主线程中运行),该方法始终将大量数据插入SQLite数据库。此时,UI非常冻结。我怎么解决这个问题?谢谢你的回答!

片段代码

fun start() {
    val query = fromServerQueueRef.orderByChild(FireEntity.SERVER_TIMESTAMP).startAt(0.0).limitToFirst(READ_LIMIT)
    overwatch = object : Overwatch() {

        private var counter = 0

        override fun onChildAdded(dataSnapshot: DataSnapshot, s: String?) {
            counter++
            entityHandler.run(dataSnapshot, counter)
            if (counter == READ_LIMIT) {
                stop()
                start()
            }
        }
    }
    overwatch.start(query)
}

1 个答案:

答案 0 :(得分:0)

如果您使用的是 firebase ,则可以使用脱机同步数据库,它非常简单实用。