Pacote io.realm

Classe Realm.Callback

  • Classe anexa:
    Realm

    public abstract static class Realm.Callback
    extends io.realm.BaseRealm.InstanceCallback<Realm>
    A chamada de resposta usada ao relatar o resultado do carregamento de um Realm de forma assíncrona usando Realm.getInstanceAsync(RealmConfiguration, Realm.Callback) ou DynamicRealm.getInstanceAsync(RealmConfiguration, DynamicRealm.Callback).

    Antes de criar a primeira Instância de Realm em um processo, há algum trabalho de inicialização que precisa ser feito, como criar ou validar esquemas, executar a migração, se necessário, copiar o arquivo de ativo se RealmConfiguration.Builder.assetFile(String) for fornecido e executar RealmConfiguration.Builder.initialData(Realm.Transaction) , se necessário. Esse trabalho pode levar tempo e bloquear o tópico do chamador por um tempo. Para evitar que a chamada getInstance() bloqueie o thread principal, o getInstanceAsync() pode ser usado em vez disso para fazer o trabalho de inicialização no thread de background e fornecer uma Instância de Realm ao thread do chamador.

    Em geral, esse método é útil principalmente no thread da UI, pois ele deve ser bloqueado o menos possível. Em quaisquer outros threads do loop de eventos ou outros threads que não suportam chamada de resposta, o uso do getInstance() padrão deve ser suficiente.

    Aqui está um exemplo de usar o getInstanceAsync() quando o aplicativo inicia a primeira atividade:

     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();
         }
       }
     }
     
    • Detalhes do construtor

      • Callback

        chamada de resposta pública()
    • Detalhes do método

      • onSuccess

        public abstract void onSuccess​(Realm realm)
        Entregue uma Instância de Realm para a conversa do chamador.
        Especificado por:
        onSuccess na aula io.realm.BaseRealm.InstanceCallback<Realm>
        Parâmetros:
        realm - a Instância de Realm para a conversa do chamador.
      • onError

        public void onError​(Throwable exception)
        Entregue um erro acontece ao criar a Instância de Realm para o tópico do chamador. A implementação padrão lançará uma exceção no thread do chamador.
        Substitui:
        onError na aula io.realm.BaseRealm.InstanceCallback<Realm>
        Parâmetros:
        exception - aconteceu ao inicializar o Realm em um thread em segundo plano.