パッケージ io.realm

クラス Realm.コールバック

  • クラスを囲みます。
    Realm

    public abstract static class Realm.Callback
    extends io.realm.BaseRealm.InstanceCallback<Realm>
    Realm.getInstanceAsync(RealmConfiguration, Realm.Callback)またはDynamicRealm.getInstanceAsync(RealmConfiguration, DynamicRealm.Callback)のいずれかを使用して Realm を非同期にロードした結果を報告するときに使用されるコールバック。

    プロセスに最初の Realm インスタンスを作成する前に、スキーマの作成または検証、必要に応じて移行の実行、 RealmConfiguration.Builder.assetFile(String)が指定されている場合はアセット ファイルのコピー、必要に応じてRealmConfiguration.Builder.initialData(Realm.Transaction)の実行など、実行する必要がある初期化作業がいくつかあります。 この作業には時間がかかり、呼び出し元のスレッドが一時的にブロックされる場合があります。 getInstance()呼び出しがメイン スレッドをブロックしないようにするには、代わりにgetInstanceAsync()を使用してバックグラウンド スレッドで初期化作業を行い、Realm インスタンスを呼び出し元のスレッドに渡します。

    一般に、このメソッドは UI スレッドでのみブロックされる必要があるため、ほとんどの場合、UI スレッドで役立ちます。 他のルーパー スレッドやコールバックをサポートしていないスレッドでは、標準のgetInstance()を使用しても問題ありません。

    以下は、アプリが最初のアクティビティを開始するときにgetInstanceAsync()を使用する例えです。

     public class MainActivity extends Activity {
    
       private Realm realm = null;
       private RealmAsyncTask realmAsyncTask;
       private static RealmConfiguration config = new RealmConfiguration.Builder()
         .schema(42)
         .migration(new MyMigration()) // Potentially lengthy migration
         .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()) {
                     // If the activity is destroyed, the Realm instance should be closed immediately to avoid leaks.
                     // Or you can call realmAsyncTask.cancel() in onDestroy() to stop callback delivery.
                     realm.close();
                 } else {
                     MainActivity.this.realm = realm;
                     // Remove the spinner and start the real UI.
                 }
             }
         });
    
         // Show a spinner before Realm instance returned by the callback.
       }
    
       \@Override
       protected void onDestroy() {
         super.onDestroy();
         if (realm != null) {
             realm.close();
             realm = null;
         } else {
             // Calling cancel() on the thread where getInstanceAsync was called on to stop the callback delivery.
             // Otherwise you need to check if the activity is destroyed to close in the onSuccess() properly.
             realmAsyncTask.cancel();
         }
       }
     }
     
    • コンストラクターの詳細

      • Callback

        public Callback()
    • メソッドの詳細

      • onSuccess

        public abstract void onSuccess​(Realm realm)
        Realm インスタンスを呼び出し元のスレッドに提供する。
        次のによって指定されます。
        onSuccess クラス内 io.realm.BaseRealm.InstanceCallback<Realm>
        パラメーター:
        realm - 呼び出し元スレッドの Realm インスタンス。
      • onError

        public void onError​(Throwable exception)
        呼び出し元スレッドに Realm インスタンスを作成するときに発生するエラーを提供します。 デフォルトの 実装は呼び出し元のスレッドで例外をスローします。
        上書き:
        onError クラス内 io.realm.BaseRealm.InstanceCallback<Realm>
        パラメーター:
        exception - バックグラウンド スレッドで Realm を初期化中に発生しました。