领域将实例作为线程

时间:2019-09-25 21:52:20

标签: java realm

我很疲倦地找到realm.getDefaultInstance或getInstance作为线程

让我们说我们有2个类正在后台运行以从服务器获取消息

当我使用某个类的领域来保存消息时:

Realm.init(context);
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
// save all data
realm.commitTransaction();
realm.close();

以及当我使用适配器从领域加载项目时

应用程序加载数据非常缓慢,有时我得到:应用程序没有响应

从领域代码加载数据:

new Thread(() -> {
  list.clear();
  Realm.init(context);
  Realm realm = Realm.getInstance(MoonApplication.group);
  RealmResults chats = realm.where(MessageRoom.class).equalTo("from", username).and().equalTo("to", us).or().equalTo("from", us).and().equalTo("to", username).findAll();
  if(chats != null){
     for(int i=0; i<chats.size(); i++){
        long id = chats.get(i).getId();
        String from = chats.get(i).getFrom();
        String to = chats.get(i).getTo();
        String body = chats.get(i).getBody();
        String time = chats.get(i).getTime();
        // etc.....
    }
  }
  realm.close();
  ((Activity)context).runOnUiThread(this::notifyDataSetChanged);
}).start();

有人可以告诉我如何使用最佳方式在领域上加载和保存数据吗?

注意:当我关闭某个类的领域时,所有类均关闭 当我没有关闭时,我会通过日志收到通知,您是否忘记关闭领域?

感谢帮助!

0 个答案:

没有答案