我们正在使用RealChangeListener来监听数据更改并通过调用notifydatasetgchanged()来更新listview。
初始同步时间我们从服务器获取许多记录(每批100条记录),循环结果更新Realm,如下面的后台线程。
for(int i=0;i<results.size();i++)
{
// processing and validation
....
db.beginTransaction();
db.copyToRealm(processedObject);
db.commitTransaction();
}
在活动中,我们注册了realmResults更改监听器,如下面的代码
@Override
public void onStart() {
super.onStart();
mEntityDataProvider = new EntityDataProvider();
mEntityDataProvider = mEntityDataProvider.getListAsync();
mEntityDataProvider.addChangeListener(realmEntityChangeListener);
}
private RealmChangeListener<RealmResults<Entity>> realmEntityChangeListener = new RealmChangeListener<RealmResults<Entity>>() {
@Override
public void onChange(RealmResults<Entity> realmResults) {
if (mEntityListAdapter!= null) {
mEntityListAdapter.setData(realmResults);
mEntityListAdapter.notifyDataSetChanged();
}
}
};
问题:
谢谢
答案 0 :(得分:1)
beginTransaction()
/ commitTransaction()
之间,以避免刷新UI太多次。mEntityListAdapter.setData(realmResults);
似乎没有必要每次都被调用,如果它在同一个RealmResults
上。