我想将所有领域操作(读/写)从活动/片段(如大多数示例中实现的那样)移动到一个单独的类/类层。
我的问题是,如果不直接在活动/片段中使用,我应该在何时何地调用realm.getInstance()和realm.close()?什么样的模式比较好?
假设所有操作都可以在ui线程中执行,而不需要在异步任务中执行。
谢谢

最佳答案

你可以把它放在一个helper类中,比如:

public class RealmHelper {

  private static RealmHelper realmHelper;
  private static Realm realm;

  public static RealmHelper getInstance(Context context) {
    realm = Realm.getInstance(context);
    if(realmHelper == null) {
        realmHelper = new RealmHelper();
    }
    return realmHelper;
  }

  private RealmHelper() {
  }

  public void saveMy(MyModel my) {
    realm.beginTransaction();
    realm.copyToRealmOrUpdate(my);
    realm.commitTransaction();
  }
  ...

当你需要的时候就叫它:
...
RealmHelper realmHelper = RealmHelper.getInstance(getApplicationContext());
realmHelper.saveMy(my);
...

08-27 17:50