安装包 io.realm

类 DynamicRealm.Callback

  • 封装类:
    DynamicRealm

    公共抽象静态类DynamicRealm.Callback扩展了 io.realm.BaseRealm.InstanceCallback< DynamicRealm >
    在报告使用Realm.getInstanceAsync(RealmConfiguration, Realm.Callback)DynamicRealm.getInstanceAsync(RealmConfiguration, DynamicRealm.Callback)异步加载 Realm 的结果时使用的回调。

    在进程中创建第一个 Realm 实例之前,需要完成一些初始化工作,例如创建或验证模式、需要时运行迁移、复制资产文件(如果提供了RealmConfiguration.Builder.assetFile(String) )以及执行RealmConfiguration.Builder.initialData(Realm.Transaction)如果需要)。 此工作可能需要一些时间,并会阻塞调用者线程一段时间。 为避免getInstance()阻塞主线程,可以改用getInstanceAsync()在背景线程中执行初始化工作,并将 Realm 实例传递给调用者线程。

    一般来说,此方法在用户界面线程上最有用,因为应尽可能少地阻止该线程。 在任何其他事件循环线程或其他不支持回调的线程上,使用标准getInstance()应该没问题。

    以下是在应用程序启动第一个 Activity 时使用getInstanceAsync()的示例:

     公共类 MainActivity 扩展了活动 { 私有 Realm 域 = null;私有 RealmAsyncTask realmAsyncTask; private static RealmConfiguration config = new RealmConfiguration.Builder() .schema(42).migration(new MyMigration()) // 可能导致冗长的迁移 .build();
    
       \@Override protected void onCreate(Bundle SavedInstanceState) { Super.onCreate(savedInstanceState);
         setContentView(R.layout.layout_main);
         realmAsyncTask = Realm.getInstanceAsync(config, new Callback() { \@Override public void onSuccess(Realm realm) { if (isDestroyed()) { // 如果活动被销毁,则应立即关闭 Realm 实例以避免泄漏。
                     // 或者在 onDestroy() 中调用 realmAsyncTask.cancel() 来停止回调传递。
                     realm.close();
                 } else { MainActivity.this.realm = realm; // 删除微调器并启动真正的用户界面。
                 } } }); // 在回调返回的 Realm 实例之前显示一个微调器。
       }\@Override protected void onDestroy() { super.onDestroy();
         if (realm != null) { realm.close();
             realm = null; } else { // 在调用 getInstanceAsync 的线程上调用 cancel() 以停止回调传递。// 否则,您需要在 onSuccess() 中检查活动是否被销毁以正确关闭。
             realmAsyncTask.cancel();
         } } }
     
    • 构造函数详细信息

      • Callback

        public Callback()
    • 方法详细信息

      • onSuccess

        公共抽象无效 onSuccess​( DynamicRealm 域)
        将 Realm 实例传递给调用者线程。
        指定者:
        onSuccess 课堂上 io.realm.BaseRealm.InstanceCallback<DynamicRealm>
        参数:
        realm - 调用者线程的 Realm 实例。
      • onError

        public void onError ​(可抛出异常)
        创建 Realm 实例到调用者线程时,会发生传递错误。 默认实现将在调用者线程上引发异常。
        覆盖:
        onError 课堂上 io.realm.BaseRealm.InstanceCallback<DynamicRealm>
        参数:
        exception — 在背景线程上初始化 Realm 时发生。