패키지 io.realm

Realm.Callback 클래스

  • 클래스를 둘러싸는 경우:
    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 스레드가 최대한 차단되어야 하기 때문에 대부분 유용합니다. 다른 이벤트 루프 스레드나 콜백을 지원하지 않는 다른 스레드에서는 표준 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

        공개 콜백()
    • 메서드 세부 정보

      • 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을 초기화하는 동안 발생했습니다.