Pacote io.realm

Classe Realm

  • Todas as interfaces implementadas:
    Closeable, AutoCloseable

    public class Realm
    extends Object
    A classe Realm é o gerenciador de armazenamento e transações do armazenamento persistente de objetos. Ele é responsável por criar instâncias de seus RealmObjects. objeto dentro de um Realm podem ser query e lidos a qualquer momento. A criação, modificação e exclusão de objetos deve ser feita enquanto estiver dentro de uma transação. Ver executeTransaction(Transaction)

    As transação garantem que várias instâncias (em vários threads) possam acessar o mesmo objeto em um estado consistente com garantias ACID totais.

    É importante lembrar de chamar o método Closeable.close() quando terminar com uma Instância de Realm. Não fazer isso pode levar a OutOfMemoryError , pois os recursos nativos não podem ser liberados.

    Instância de Realm não podem ser usadas em threads diferentes. Isso significa que você precisa abrir uma instância em cada thread que deseja usar o Realm. Instância de Realm são armazenadas em cache automaticamente por thread usando a contagem de referências, portanto, desde que a contagem de referências não chegue a zero, chamar getInstance(RealmConfiguration) apenas retornará o Realm em cache e deve ser considerada uma operação leve.

    Para o thread da UI, isso significa que a abertura e o fechamento de Realms devem ocorrer em onCreate/onDestroy ou onStart/onStop.

    As instâncias do Realm coordenam seu estado entre threads usando o mecanismo Handler . Isso também significa que as instâncias do Realm em threads sem Looper não podem receber atualizações, a menos que refresh() seja chamado manualmente.

    Um padrão padrão para trabalhar com o Realm nas atividades do Android pode ser visto abaixo:

     public class RealmApplication extends Application {
    
         \@Override
         public void onCreate() {
             super.onCreate();
    
             // The Realm file will be located in package's "files" directory.
             RealmConfiguration realmConfig = new RealmConfiguration.Builder(this).build();
             Realm.setDefaultConfiguration(realmConfig);
         }
     }
    
     public class RealmActivity extends Activity {
    
       private Realm realm;
    
       \@Override
       protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.layout_main);
         realm = Realm.getDefaultInstance();
       }
    
       \@Override
       protected void onDestroy() {
         super.onDestroy();
         realm.close();
       }
     }
     

    O Realm suporta campos de string e bytes contendo até 16 MB.

    Veja também:
    ACID, exemplos usando o Realm
    • Detalhes do campo

      • ENCRYPTION_KEY_LENGTH

        public static final int ENCRYPTION_KEY_LENGTH
        O comprimento necessário para chaves de criptografia usadas para criptografar dados do Realm.
        Veja também:
        Valores de campo constantes
      • write_executor

        public static final io.realm.internal.async.RealmThreadPoolExecutor WRITE_EXECUTOR
        Executor do pool de threads usado para operações de gravação - apenas um thread é necessário, pois as gravações não podem ser paralelizadas.
      • sharedRealm

        public io.realm.internal.OsSharedRealm sharedRealm
      • objectContext

        public static final io.realm.BaseRealm.ThreadLocalRealmObjectContext objectContext
    • Detalhes do método

      • asFlowable

        public Flowable<Realm> asFlowable()
        Retorna um RxJava Flowable que monitora as alterações nesse Realm. Ele emitirá o estado atual quando for assinado. Os itens serão emitidos continuamente à medida que o Realm for atualizado - onComplete nunca será chamado.

        Os itens emitidos do Realm Flowables estão congelados (consulte freeze(). Isso significa que eles são imutáveis e podem ser lidos em qualquer thread.

        Os Realm Flowables sempre emitem itens do tópico que contém o Realm ativo. Isso significa que, se você precisar fazer processamento adicional, é recomendável observar os valores em um agendador de computação:

        realm.asFlowable() .observeOn(Schedulers.computation()) .map(rxRealm -> doExpensiveWork(rxRealm)) .observeOn(AndroidSchedulers.mainThread()) .subscribe( ... );

        Se você quiser que o asFlowable() pare de emitir itens, você pode instruir o RxJava a emitir apenas somente o primeiro item usando o operador first() :

         
         realm.asFlowable().first().subscribe( ... ); // You only get the results once
         
         
        Retorna:
        RxJava Observable que chama apenas onNext. Ele nunca chamará onComplete ou OnError.
        Veja também:
        RxJava e Realm
      • isEmpty

        boolean público isEmpty()
        Verifica se este Realm contém algum objeto.
        Retorna:
        true se vazio, @{code false} caso contrário.
      • init

        public static void init​(Context context)
        Inicializa a biblioteca do Realm e cria uma configuração padrão que está pronta para ser usada. É necessário chamar esse método antes de interagir com qualquer outra API do Realm.

        Um bom lugar está em uma subclasse Application :

         
         public class MyApplication extends Application {
           \@Override
           public void onCreate() {
             super.onCreate();
             Realm.init(this);
           }
         }
         
         

        Lembre-se de registrá-lo no arquivo AndroidManifest.xml :

         
         <?xml version="1.0" encoding="utf-8"?>
         <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="io.realm.example">
         <application android:name=".MyApplication">
           // ...
         </application>
         </manifest>
         
         
        Parâmetros:
        context - o Contexto do aplicativo.
        Lançamentos:
        IllegalArgumentException - se um contexto null for fornecido.
        IllegalStateException - se Context.getFilesDir() não puder ser encontrado.
        Veja também:
        getDefaultInstance()
      • init

        public static void init​(Context context,
                                String userAgent)
        Inicializa a biblioteca do Realm e cria uma configuração padrão que está pronta para ser usada. É necessário chamar esse método antes de interagir com qualquer outra API do Realm.

        Um bom lugar está em uma subclasse Application :

         
         public class MyApplication extends Application {
           \@Override
           public void onCreate() {
             super.onCreate();
             Realm.init(this, "MyApp/" + BuildConfig.VERSION_NAME);
           }
         }
         
         

        Lembre-se de registrá-lo no arquivo AndroidManifest.xml :

         
         <?xml version="1.0" encoding="utf-8"?>
         <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="io.realm.example">
         <application android:name=".MyApplication">
           // ...
         </application>
         </manifest>
         
         
        Parâmetros:
        context - o Contexto do aplicativo.
        userAgent - string opcional definida pelo usuário que será enviada ao Servidor de objetos de Realm como parte de um cabeçalho User-Agent quando uma sessão for estabelecida. Esta configuração não será usada por Realms não sincronizados.
        Lançamentos:
        IllegalArgumentException - se um contexto null ou userAgent for fornecido.
        IllegalStateException - se Context.getFilesDir() não puder ser encontrado.
        Veja também:
        getDefaultInstance()
      • getDefaultConfiguration

        @Nullable
        public static RealmConfiguration getDefaultConfiguration()
        Retorna a configuração padrão para getDefaultInstance().
        Retorna:
        objeto de configuração padrão ou null se nenhuma configuração padrão for especificada.
      • createAllFromJson

        public <E extends RealmModel> void createAllFromJson​(Class<E> clazz,
                                                             JSONArray json)
        Cria um Objeto de Realm para cada objeto em uma array JSON. Isso deve ser feito em uma transação.

        Propriedades JSON com propriedades desconhecidas serão ignoradas. Se um campo RealmObject não estiver presente no objeto JSON, o campo RealmObject será definido para o valor padrão para esse tipo.

        Atualmente, este método não suporta o campo de lista de valores.

        Parâmetros:
        clazz - tipo de Objeto de Realm a serem criados.
        json - uma array onde cada JSONObject deve mapear para a classe especificada.
        Lançamentos:
        RealmException - se o mapeamento do JSON falhar.
        IllegalArgumentException - se o objeto JSON não tiver uma propriedade de chave primária, mas o RealmObjectSchema correspondente tiver um PrimaryKey definido.
        UnsupportedOperationException - se o objeto a inserir contiver um RealmDictionary ou um RealmSet.
        Veja também:
        RealmSet, RealmDictionary, RealmMap
      • createAllFromJson

        public <E extends RealmModel> void createAllFromJson​(Class<E> clazz,
                                                             String json)
        Cria um Objeto de Realm para cada objeto em uma array JSON. Isso deve ser feito em uma transação. Propriedades JSON com propriedades desconhecidas serão ignoradas. Se um campo RealmObject não estiver presente no objeto JSON, o campo RealmObject será definido para o valor padrão para esse tipo.

        Atualmente, este método não suporta o campo de lista de valores.

        Parâmetros:
        clazz - tipo de Objeto de Realm a serem criados.
        json - a matriz JSON como uma cadeia de caracteres em que cada objeto pode mapear para a classe especificada.
        Lançamentos:
        RealmException - se o mapeamento do JSON falhar.
        IllegalArgumentException - se o objeto JSON não tiver uma propriedade de chave primária, mas o RealmObjectSchema correspondente tiver um PrimaryKey definido.
        UnsupportedOperationException - se o objeto a inserir contiver um RealmDictionary ou um RealmSet.
        Veja também:
        RealmSet, RealmDictionary, RealmMap
      • createOrUpdateAllFromJson

        public <E extends RealmModel> void createOrUpdateAllFromJson​(Class<E> clazz,
                                                                     String json)
        Tenta atualizar uma lista de objetos existentes identificados por sua chave primária com novos dados JSON. Se um objeto existente não puder ser encontrado no Realm, um novo objeto será criado. Isso deve acontecer dentro de uma transação. Se atualizar um RealmObject e um campo não for encontrado no objeto JSON, esse campo não será atualizado. Se um novo RealmObject for criado e um campo não for encontrado no objeto JSON, esse campo receberá o valor padrão para o tipo de campo.

        Atualmente, este método não suporta o campo de lista de valores.

        Parâmetros:
        clazz - tipo de RealmObject para criar ou atualizar. Deve ter uma chave primária definida.
        json - string com uma array de objetos JSON.
        Lançamentos:
        IllegalArgumentException - se estiver tentando atualizar uma classe sem um PrimaryKey.
        RealmException - se não for possível criar uma array JSON a partir da string json.
        IllegalArgumentException - se o objeto JSON não tiver uma propriedade de chave primária, mas o RealmObjectSchema correspondente tiver um PrimaryKey definido.
        UnsupportedOperationException - se o objeto a inserir contiver um RealmDictionary ou um RealmSet.
        Veja também:
        createAllFromJson(Class, String) , RealmSet , RealmDictionary , RealmMap
      • createAllFromJson

        public <E extends RealmModel> void createAllFromJson​(Class<E> clazz,
                                                             InputStream inputStream)
                                                      throws IOException
        Cria um Objeto de Realm para cada objeto em uma array JSON. Isso deve ser feito em uma transação. Propriedades JSON com propriedades desconhecidas serão ignoradas. Se um campo RealmObject não estiver presente no objeto JSON, o campo RealmObject será definido para o valor padrão para esse tipo.

        Esta API só está disponível no nível de API 11 ou posterior.

        Atualmente, este método não suporta o campo de lista de valores.

        Parâmetros:
        clazz - tipo de Objeto de Realm criados.
        inputStream - a array JSON como InputStream. Todos os objetos na array devem ser da classe especificada.
        Lançamentos:
        RealmException - se o mapeamento do JSON falhar.
        IllegalArgumentException - se o objeto JSON não tiver uma propriedade de chave primária, mas o RealmObjectSchema correspondente tiver um PrimaryKey definido.
        IOException - se algo estivesse errado com o fluxo de entrada.
        UnsupportedOperationException - se o objeto a inserir contiver um RealmDictionary ou um RealmSet.
        Veja também:
        RealmSet, RealmDictionary, RealmMap
      • createObjectFromJson

        @Nullable
        public <E extends RealmModel> E createObjectFromJson​(Class<E> clazz,
                                                             String json)
        Cria um Objeto de Realm pré-preenchido com dados de um objeto JSON. Isso deve ser feito dentro de uma transação. Propriedades JSON com propriedades desconhecidas serão ignoradas. Se um campo RealmObject não estiver presente no objeto JSON, o campo RealmObject será definido para o valor padrão para esse tipo.

        Atualmente, este método não suporta o campo de lista de valores.

        Parâmetros:
        clazz - tipo de objeto de Realm a ser criado.
        json - a string JSON com dados de objeto.
        Retorna:
        objeto criado ou null se a string JSON estiver vazia ou nula.
        Lançamentos:
        RealmException - se o mapeamento para json falhar.
        IllegalArgumentException - se o objeto JSON não tiver uma propriedade de chave primária, mas o RealmObjectSchema correspondente tiver um PrimaryKey definido.
        UnsupportedOperationException - se o objeto a inserir contiver um RealmDictionary ou um RealmSet.
        Veja também:
        RealmSet, RealmDictionary, RealmMap
      • createObjectFromJson

        @Nullable
        public <E extends RealmModel> E createObjectFromJson​(Class<E> clazz,
                                                             InputStream inputStream)
                                                      throws IOException
        Cria um Objeto de Realm pré-preenchido com dados de um objeto JSON. Isso deve ser feito dentro de uma transação. Propriedades JSON com propriedades desconhecidas serão ignoradas. Se um campo RealmObject não estiver presente no objeto JSON, o campo RealmObject será definido para o valor padrão para esse tipo.

        Esta API só está disponível no nível de API 11 ou posterior.

        Atualmente, este método não suporta o campo de lista de valores.

        Parâmetros:
        clazz - tipo de objeto de Realm a ser criado.
        inputStream - os dados do objeto JSON como um InputStream.
        Retorna:
        objeto criado ou null se a string JSON estiver vazia ou nula.
        Lançamentos:
        RealmException - se o mapeamento do JSON falhar.
        IllegalArgumentException - se o objeto JSON não tiver uma propriedade de chave primária, mas o RealmObjectSchema correspondente tiver um PrimaryKey definido.
        IOException - se algo desse errado com o fluxo de entrada.
        UnsupportedOperationException - se o objeto a inserir contiver um RealmDictionary ou um RealmSet.
        Veja também:
        RealmSet, RealmDictionary, RealmMap
      • createObject

        public <E extends RealmModel> E createObject​(Class<E> clazz)
        Instancia e adiciona um novo objeto ao Realm.

        Este método só está disponível para classes de modelo sem anotação @PrimaryKey. Se você quiser criar um objeto que tenha uma chave primária, use createObject(Class, Object) ou copyToRealm(RealmModel, ImportFlag...) em vez disso.

        Parâmetros:
        clazz - a classe do objeto a ser criado.
        Retorna:
        o novo objeto.
        Lançamentos:
        RealmException - se a chave primária for definida na classe do modelo ou um objeto não puder ser criado.
        Veja também:
        createObject(Class, Object)
      • createObject

        public <E extends RealmModel> E createObject​(Class<E> clazz,
                                                     @Nullable
                                                     Object primaryKeyValue)
        Instancia e adiciona um novo objeto ao Realm com o valor da chave primária já definido.

        Se o valor violar a restrição da chave primária, nenhum objeto será adicionado e um RealmException será lançado. O valor padrão para a chave primária fornecido pela classe do modelo será ignorado.

        Parâmetros:
        clazz - a classe do objeto a ser criado.
        primaryKeyValue - valor para o campo de chave primária.
        Retorna:
        o novo objeto.
        Lançamentos:
        RealmException - se o objeto não puder ser criado devido à chave primária ser inválida.
        IllegalStateException - se a classe do modelo não tiver uma chave primária definida.
        IllegalArgumentException - se primaryKeyValue não tiver um valor que possa ser convertido para o valor esperado.
      • createEmbeddedObject

        public <E extends RealmModel> E createEmbeddedObject​(Class<E> clazz,
                                                             RealmModel parentObject,
                                                             String parentProperty)
        Instancia e adiciona um novo objeto incorporado ao Realm.

        Este método só deve ser usado para criar objetos de tipos marcados como incorporados.

        Parâmetros:
        clazz - a classe do objeto a ser criado. Deve ser marcado com \@RealmClass(embedded = true).
        parentObject - O objeto principal, que deve manter uma referência ao objeto incorporado.
        parentProperty - a propriedade na classe principal que contém a referência. Se a propriedade principal for uma lista, o objeto incorporado será adicionado ao final dessa lista.
        Retorna:
        o objeto incorporado recém-criado.
        Lançamentos:
        IllegalArgumentException - se clazz não for uma classe incorporada ou se a propriedade na classe principal não puder conter objetos do tipo apropriado.
        Veja também:
        RealmClass.embedded()
      • copyToRealm

        public <E extends RealmModel> E copyToRealm​(E object,
                                                    ImportFlag... flags)
        Copia um RealmObject para a Instância de Realm e retorna a cópia. Quaisquer alterações adicionais no RealmObject original não serão refletidas na cópia do Realm. Esta é uma cópia profunda, então todos os objetos referenciados serão copiados. Os objetos que já estão neste Realm serão ignorados.

        Observe que copiar um objeto copiará todos os valores de campo. Qualquer campo não definido neste e nos objetos filho será definido para seu valor padrão se não for fornecido.

        Parâmetros:
        object - o RealmObject para copiar para o Realm.
        flags - qualquer sinalizador que modifique o comportamento de inserir os dados no Realm.
        Retorna:
        um RealmObject gerenciado com suas propriedades apoiadas pelo Realm.
        Lançamentos:
        IllegalArgumentException - se o objeto for null ou pertencer a uma instância de Realm em uma thread diferente.
      • copyToRealmOrUpdate

        public <E extends RealmModel> E copyToRealmOrUpdate​(E object,
                                                            ImportFlag... flags)
        Atualiza um RealmObject existente que é identificado pelo mesmo PrimaryKey ou cria uma nova cópia se nenhum objeto existente puder ser encontrado. Esta é uma cópia ou atualização profunda, ou seja, todos os objetos referenciados serão copiados ou atualizados.

        Observe que copiar um objeto copiará todos os valores de campo. Qualquer campo não definido no objeto e nos objetos filho será definido com seu valor padrão se não for fornecido.

        Parâmetros:
        object - RealmObject para copiar ou atualizar.
        flags - qualquer sinalizador que modifique o comportamento de inserir os dados no Realm.
        Retorna:
        o RealmObject novo ou atualizado com todas as suas propriedades apoiadas pelo Realm.
        Lançamentos:
        IllegalArgumentException - se o objeto for null ou não tiver uma chave primária definida ou pertencer a uma Instância de Realm em um thread diferente.
        Veja também:
        copyToRealm(RealmModel, ImportFlag...)
      • copyToRealm

        public <E extends RealmModelList<E> copyToRealm​(Iterable<E> objects,
                                                          ImportFlag... flags)
        Copia uma collection de RealmObjects para a Instância de Realm e retorna sua cópia. Quaisquer alterações adicionais nos RealmObjects originais não serão refletidas nas cópias do Realm. Esta é uma cópia profunda, ou seja, todos os objetos referenciados serão copiados. Os objetos que já estão neste Realm serão ignorados.

        Observe que copiar um objeto copiará todos os valores de campo. Any unset field in the objects and child objects will be set to their default value if not provided.

        Parâmetros:
        objects - os RealmObjects a serem copiados para o Realm.
        flags - qualquer sinalizador que modifique o comportamento de inserir os dados no Realm.
        Retorna:
        uma lista dos RealmObjects convertidos que têm suas propriedade managed pelo Realm.
        Lançamentos:
        RealmException - se algum dos objetos já tiver sido adicionado ao Realm.
        IllegalArgumentException - se algum dos elementos na collection de entrada for null.
      • insert

        public void insert​(Collection<? extends RealmModel> objects)
        Insere uma lista de RealmObjects não gerenciados. Isso geralmente é mais rápido do que copyToRealm(Iterable, ImportFlag...) , pois não retorna os elementos inseridos e executa alocações e verificações mínimas. Depois de inseridos, quaisquer alterações nos objetos originais não serão persistidas.

        Observação:

        • Não verificamos se os objeto fornecidos já são managed ou não, portanto, a inserção de um objeto managed pode duplicá-lo. A duplicação só ocorrerá se o objeto não tiver uma chave primária. objeto com chave primária nunca serão duplicados.
        • Não criamos (nem retornamos) um RealmObject managed para cada elemento
        • Copiar um objeto copiará todos os valores de campo. Qualquer campo não definido no objeto e os objetos filho serão definidos para seu valor padrão se não forem fornecidos

        Se quiser que o managed RealmObject seja retornado, use copyToRealm(Iterable, ImportFlag...), caso contrário, se você tiver um grande número de objeto, esse método geralmente é mais rápido.

        Parâmetros:
        objects - RealmObjects para inserir.
        Lançamentos:
        IllegalStateException - se o Realm correspondente estiver fechado, chamado de um thread incorreto ou não estiver uma transação.
      • insert

        public void insert​(RealmModel object)
        Insere um RealmObject não gerenciado. Isso geralmente é mais rápido do que copyToRealm(RealmModel, ImportFlag...) , pois não retorna os elementos inseridos e executa alocações e verificações mínimas. Depois de inserido, quaisquer alterações no objeto original não serão mantidas.

        Observação:

        • Não verificamos se os objeto fornecidos já são managed ou não, portanto, a inserção de um objeto managed pode duplicá-lo. A duplicação só ocorrerá se o objeto não tiver uma chave primária. objeto com chave primária nunca serão duplicados.
        • Não criamos (nem retornamos) um RealmObject managed para cada elemento
        • Copiar um objeto copiará todos os valores de campo. Qualquer campo não definido no objeto e os objetos filho serão definidos para seu valor padrão se não forem fornecidos

        Se quiser que o managed RealmObject seja retornado, use copyToRealm(RealmModel, ImportFlag...), caso contrário, se você tiver um grande número de objeto, esse método geralmente é mais rápido.

        Parâmetros:
        object - RealmObjects para inserir.
        Lançamentos:
        IllegalStateException - se o Realm correspondente estiver fechado, chamado de um thread incorreto ou não estiver uma transação.
        RealmPrimaryKeyConstraintException - se dois objetos com a mesma chave primária forem inseridos ou se um valor de chave primária já existir no Realm.
      • insiraOrUpdate

        public void insertOrUpdate​(Collection<? extends RealmModel> objects)
        Insere ou atualiza uma lista de RealmObjects não gerenciados. Isso geralmente é mais rápido do que copyToRealmOrUpdate(Iterable, ImportFlag...) , pois não retorna os elementos inseridos e executa alocações e verificações mínimas. Depois de inseridos, quaisquer alterações nos objetos originais não serão persistidas.

        Observação:

        • Não verificamos se os objeto fornecidos já são managed ou não, portanto, a inserção de um objeto managed pode duplicá-lo. A duplicação só ocorrerá se o objeto não tiver uma chave primária. objeto com chave primária nunca serão duplicados.
        • Não criamos (nem retornamos) um RealmObject managed para cada elemento
        • Copiar um objeto copiará todos os valores de campo. Qualquer campo não definido no objeto e os objetos filho serão definidos para seu valor padrão se não forem fornecidos

        Se quiser que o managed RealmObject seja retornado, use copyToRealm(Iterable, ImportFlag...), caso contrário, se você tiver um grande número de objeto, esse método geralmente é mais rápido.

        Parâmetros:
        objects - RealmObjects para inserir.
        Lançamentos:
        IllegalStateException - se o Realm correspondente estiver fechado, chamado de um thread incorreto ou não estiver uma transação.
        RealmPrimaryKeyConstraintException - se dois objetos com a mesma chave primária forem inseridos ou se um valor de chave primária já existir no Realm.
      • insiraOrUpdate

        public void insertOrUpdate​(RealmModel object)
        Insere ou atualiza um RealmObject não gerenciado. Isso geralmente é mais rápido do que copyToRealmOrUpdate(RealmModel, ImportFlag...) , pois não retorna os elementos inseridos e executa alocações e verificações mínimas. Depois de inserido, quaisquer alterações no objeto original não serão mantidas.

        Observação:

        • Não verificamos se os objeto fornecidos já são managed ou não, portanto, a inserção de um objeto managed pode duplicá-lo. A duplicação só ocorrerá se o objeto não tiver uma chave primária. objeto com chave primária nunca serão duplicados.
        • Não criamos (nem retornamos) um RealmObject managed para cada elemento
        • Copiar um objeto copiará todos os valores de campo. Qualquer campo não definido no objeto e os objetos filho serão definidos para seu valor padrão se não forem fornecidos

        Se quiser que o managed RealmObject seja retornado, use copyToRealm(RealmModel, ImportFlag...), caso contrário, se você tiver um grande número de objeto, esse método geralmente é mais rápido.

        Parâmetros:
        object - RealmObjects para inserir.
        Lançamentos:
        IllegalStateException - se o Realm correspondente estiver fechado, chamado de um thread incorreto ou não estiver uma transação.
      • copyToRealmOrUpdate

        public <E extends RealmModelList<E> copyToRealmOrUpdate​(Iterable<E> objects,
                                                                  ImportFlag... flags)
        Atualiza uma lista de RealmObjects existentes que é identificado pelo seu PrimaryKey ou cria uma nova cópia se nenhum objeto existente puder ser encontrado. Esta é uma cópia ou atualização profunda, ou seja, todos os objetos referenciados serão copiados ou atualizados.

        Observe que copiar um objeto copiará todos os valores de campo. Any unset field in the objects and child objects will be set to their default value if not provided.

        Parâmetros:
        objects - uma lista de objetos para atualizar ou copiar para Realm.
        flags - qualquer sinalizador que modifique o comportamento de inserir os dados no Realm.
        Retorna:
        uma lista de todos os RealmObjects novos ou atualizados.
        Lançamentos:
        IllegalArgumentException - se o RealmObject for null ou não tiver uma chave primária definida.
        Veja também:
        copyToRealm(Iterable, ImportFlag...)
      • copyFromRealm

        public <E extends RealmModelList<E> copyFromRealm​(Iterable<E> realmObjects)
        Faz uma cópia na memória não gerenciada de RealmObjects já persistentes. Esta é uma cópia profunda que copiará todos os objetos referenciados.

        Os objetos copiados são todos separados do Realm e não serão mais atualizados automaticamente. Isso significa que os objeto copiados podem conter dados que não são mais consistentes com outros Objeto de Realm managed.

        *AVISO*: quaisquer alterações em objetos copiados podem ser mescladas de volta ao Realm usando copyToRealmOrUpdate(RealmModel, ImportFlag...) , mas todos os campos serão substituídos, não apenas aqueles que foram alterados. Isso inclui referências a outros objetos e pode potencialmente substituir as alterações feitas por outros threads. Este comportamento pode ser modificado usando ImportFlags.

        Parâmetros do tipo:
        E - tipo de objeto.
        Parâmetros:
        realmObjects - RealmObjects para copiar.
        Retorna:
        uma cópia desanexada na memória de RealmObjects managed.
        Lançamentos:
        IllegalArgumentException - se o RealmObject não estiver mais acessível ou for um DynamicRealmObject.
        Veja também:
        copyToRealmOrUpdate(Iterable, ImportFlag...)
      • copyFromRealm

        public <E extends RealmModelList<E> copyFromRealm​(Iterable<E> realmObjects,
                                                            int maxDepth)
        Faz uma cópia na memória não gerenciada de RealmObjects já persistentes. Esta é uma cópia em profundidade que copiará todos os objetos referenciados até a profundidade definida.

        Os objetos copiados são todos separados do Realm e não serão mais atualizados automaticamente. Isso significa que os objeto copiados podem conter dados que não são mais consistentes com outros Objeto de Realm managed.

        *AVISO*: quaisquer alterações em objetos copiados podem ser mescladas de volta ao Realm usando copyToRealmOrUpdate(Iterable, ImportFlag...) , mas todos os campos serão substituídos, não apenas aqueles que foram alterados. Isso inclui referências a outros objetos, mesmo que eles possam ser null devido ao fato de maxDepth ter sido atingido. Isso também pode substituir as alterações feitas por outros threads. Esse comportamento pode ser modificado usando ImportFlags.

        Parâmetros do tipo:
        E - tipo de objeto.
        Parâmetros:
        realmObjects - RealmObjects para copiar.
        maxDepth - limite da cópia profunda. Todas as referências após esta profundidade serão null. A profundidade inicial é 0.
        Retorna:
        uma cópia desanexada na memória dos RealmObjects.
        Lançamentos:
        IllegalArgumentException - se maxDepth < 0, o RealmObject não está mais acessível ou é um DynamicRealmObject.
        Veja também:
        copyToRealmOrUpdate(Iterable, ImportFlag...)
      • copyFromRealm

        public <E extends RealmModel> E copyFromRealm​(E realmObject)
        Faz uma cópia na memória não gerenciada de um RealmObject já persistente. Esta é uma cópia profunda que copiará todos os objetos referenciados.

        O(s) objeto(s) copiado(s) será(ão) separado(s) do Realm e não será mais atualizado automaticamente. Isso significa que os objeto copiados podem conter dados que não são mais consistentes com outros Objeto de Realm managed.

        *AVISO*: quaisquer alterações em objetos copiados podem ser mescladas de volta ao Realm usando copyToRealmOrUpdate(RealmModel, ImportFlag...) , mas todos os campos serão substituídos, não apenas aqueles que foram alterados. Isso inclui referências a outros objetos e pode potencialmente substituir as alterações feitas por outros threads. Este comportamento pode ser modificado usando ImportFlags.

        Parâmetros do tipo:
        E - tipo de objeto.
        Parâmetros:
        realmObject - RealmObject para copiar.
        Retorna:
        uma cópia destacada na memória do RealmObject managed.
        Lançamentos:
        IllegalArgumentException - se o RealmObject não estiver mais acessível ou for um DynamicRealmObject.
        Veja também:
        copyToRealmOrUpdate(RealmModel, ImportFlag...)
      • copyFromRealm

        public <E extends RealmModel> E copyFromRealm​(E realmObject,
                                                      int maxDepth)
        Faz uma cópia na memória não gerenciada de um RealmObject já persistente. Esta é uma cópia em profundidade que copiará todos os objetos referenciados até a profundidade definida.

        O(s) objeto(s) copiado(s) será(ão) separado(s) do Realm e não será mais atualizado automaticamente. Isso significa que os objeto copiados podem conter dados que não são mais consistentes com outros Objeto de Realm managed.

        *AVISO*: quaisquer alterações em objetos copiados podem ser mescladas de volta ao Realm usando copyToRealmOrUpdate(RealmModel, ImportFlag...) , mas todos os campos serão substituídos, não apenas aqueles que foram alterados. Isso inclui referências a outros objetos, mesmo que eles possam ser null devido ao fato de maxDepth ter sido atingido. Isso também pode substituir as alterações feitas por outros threads. Esse comportamento pode ser modificado usando ImportFlags.

        Parâmetros do tipo:
        E - tipo de objeto.
        Parâmetros:
        realmObject - RealmObject para copiar.
        maxDepth - limite da cópia profunda. Todas as referências após esta profundidade serão null. A profundidade inicial é 0.
        Retorna:
        uma cópia destacada na memória do RealmObject managed.
        Lançamentos:
        IllegalArgumentException - se maxDepth < 0, o RealmObject não está mais acessível ou é um DynamicRealmObject.
        Veja também:
        copyToRealmOrUpdate(RealmModel, ImportFlag...)
      • ONDE

        public <E extends RealmModelRealmQuery<E> where​(Class<E> clazz)
        Retorna um RealmQuery digitado, que pode ser usado para query objeto específicos desse tipo
        Parâmetros:
        clazz - a classe do objeto que deve ser query para.
        Retorna:
        um RealmQuery digitado, que pode ser usado para query objeto específicos desse tipo.
        Veja também:
        RealmQuery
      • Remover todos os ouvintes de alterações

        public void removeAllChangeListeners()
        Remove todos os ouvintes de alterações definidos pelo usuário.
        Lançamentos:
        IllegalStateException - se você tentar remover ouvintes de um thread que não seja do loop de eventos.
        Veja também:
        RealmChangeListener
      • excluir

        public void delete​(Class<? extends RealmModel> clazz)
        Exclui todos os objetos da classe especificada do Realm.
        Parâmetros:
        clazz - a classe quais objetos devem ser removidos.
        Lançamentos:
        IllegalStateException - se o Realm estiver fechado ou chamado de um thread incorreto.
      • deleteRealm

        public static boolean deleteRealm​(RealmConfiguration configuration)
        Exclui o Arquivo de Realm junto com os arquivos temporários relacionados especificados pelo RealmConfiguration fornecido do sistema de arquivos. Arquivo temporário com "bloqueio" extensão não será excluída.

        Todas as Instância de Realm devem ser fechadas antes de chamar este método.

        AVISO: para o Realm sincronizado, há uma chance de que uma Instância de Realm no thread em segundo plano não esteja fechada mesmo que todas as Instância de Realm controladas pelo usuário estejam fechadas. Isso resultará em um IllegalStateException. Consulte o problema https://github.com/realm/realm-java/issues/5416.

        Parâmetros:
        configuration - um RealmConfiguration.
        Retorna:
        false se o Arquivo de Realm não puder ser excluído. A falha na exclusão de arquivos temporários não terá impacto no valor de devolução. Todas as exclusões de arquivos com falha serão registradas.
        Lançamentos:
        IllegalStateException - se houver Instância de Realm abertas em outras threads ou outros processos.
      • compactaRealm

        public static boolean compactRealm​(RealmConfiguration configuration)
        Compacta um Arquivo de Realm. Um Arquivo de Realm geralmente contém espaço livre/não utilizado. Esse método remove esse espaço livre e o tamanho do arquivo é reduzido. Objeto dentro do Arquivo de Realm permanecem intocados.

        O arquivo deve ser fechado antes que este método seja chamado, caso contrário, false será retornado.
        O sistema de arquivos deve ter espaço livre para pelo menos uma cópia do Arquivo de Realm.
        O Arquivo de Realm permanece intocado se qualquer operação de arquivo falhar.

        Parâmetros:
        configuration - um RealmConfiguration apontando para um Arquivo de Realm.
        Retorna:
        true se bem-sucedido, false se qualquer operação de arquivo falhar.
      • congelar

        Public Realm Congelamento()
        Retorna um snapshot congelado do Realm atual. Este Realm pode ser lido e query de qualquer thread sem lançar um IllegalStateException. Um Realm congelado tem seu próprio ciclo de vida e pode ser fechado chamando Closeable.close(), mas fechar totalmente o Realm que gerou a cópia congelada também fechará o Realm congelado.

        Os dados congelados podem ser query normalmente, mas tentar modificá-los de qualquer forma ou tentar registrar qualquer ouvinte lançará um IllegalStateException.

        Observação: manter um grande número de Realms com versões diferentes ativos pode ter um impacto negativo no tamanho do arquivo do Realm. Para evitar tal situação, é possível definir RealmConfiguration.Builder.maxNumberOfActiveVersions(long).

        Retorna:
        uma cópia congelada deste Realm.
      • getDefaultModule

        @Nullable
        public static Object getDefaultModule()
        Retorna o módulo Realm padrão. Este módulo contém todas as classes de Realm no projeto atual, mas não aquelas da biblioteca ou das dependências do projeto. Classes de domínio nestes devem ser expostas usando seu próprio módulo.
        Retorna:
        o módulo Realm padrão ou null se não existir nenhum módulo padrão.
        Lançamentos:
        RealmException - se não for possível criar uma instância do módulo.
        Veja também:
        RealmConfiguration.Builder.modules(Object, Object...)
      • getGlobalInstanceCount

        public static int getGlobalInstanceCount​(RealmConfiguration configuration)
        Retorna o número atual de Instância de Realm abertas em todos os threads no processo atual que estão usando esta configuração. Isso inclui Realms dinâmicos e normais.
        Parâmetros:
        configuration - o RealmConfiguration para o Realm.
        Retorna:
        número de instâncias de Realm abertas em todos os threads.
      • getLocalInstanceCount

        public static int getLocalInstanceCount​(RealmConfiguration configuration)
        Retorna o número atual de Instância de Realm abertas no thread que chama esse método. Isso inclui Realms dinâmicos e normais.
        Parâmetros:
        configuration - o RealmConfiguration para o Realm.
        Retorna:
        número de Instância de Realm abertas na thread do chamador.
      • setAutoRefresh

        public void setAutoRefresh​(boolean autoRefresh)
        Define o status de atualização automática da instância de Realm.

        A atualização automática é um recurso que permite a atualização automática da Instância de Realm e todos os seus objeto derivados (instâncias RealmResults e RealmObject) quando uma confirmação é executada em um Realm que atua no mesmo arquivo em outro thread. Este recurso só estará disponível se a Instância de Realm estiver em um thread habilitado Looper .

        Parâmetros:
        autoRefresh - true ativará a atualização automática, false a desativará.
        Lançamentos:
        IllegalStateException - se chamado de um thread não loop de eventos.
      • isAutoRefresh

        public boolean isAutoRefresh()
        Recupera o status de atualização automática da instância do Realm.
        Retorna:
        o status de atualização automática.
      • isInTransaction

        public boolean isInTransaction()
        Verifica se o Realm está atualmente em uma transação.
        Retorna:
        true se dentro de uma transação, false caso contrário.
      • writeCopyTo

        public void writeCopyTo​(File destination)
        Escreve uma cópia compactada do Realm no Arquivo de destino fornecido. O arquivo resultante pode ser usado como conjunto de dados inicial para inicializar um Realm local ou sincronizado em outros dispositivos.

        O arquivo de destino já não pode existir.

        Observe que, se isso for chamado de dentro de uma transação, ele gravará os dados atuais, e não os dados como eram quando a última transação foi confirmada.

        Parâmetros:
        destination - para salvar o Realm.
        Lançamentos:
        IllegalArgumentException - se o argumento de destino for nulo.
        RealmFileException - se acontecer um erro ao acessar o Arquivo de Realm subjacente ou ao gravar no arquivo de destino.
        IllegalStateException - se chamado do thread da UI.
        IllegalStateException - se nem todas as alterações do cliente estiverem integradas no servidor.
      • writeEncryptedCopyTo

        public void writeEncryptedCopyTo​(File destination,
                                         byte[] key)
        Escreve uma cópia compactada e criptografada do Realm no Arquivo de destino fornecido. O arquivo resultante pode ser usado como conjunto de dados inicial para inicializar um Realm local ou sincronizado em outros dispositivos.

        O arquivo de destino já não pode existir.

        Observe que, se isso for chamado de dentro de uma transação, ele gravará os dados atuais, e não os dados como eram quando a última transação foi confirmada.

        Parâmetros:
        destination - para salvar o Realm.
        key - uma chave de criptografia de 64 bytes.
        Lançamentos:
        IllegalArgumentException - se o argumento de destino for nulo.
        RealmFileException - se acontecer um erro ao acessar o Arquivo de Realm subjacente ou ao gravar no arquivo de destino.
        IllegalStateException - se chamado do thread da UI.
        IllegalStateException - se nem todas as alterações do cliente estiverem integradas no servidor.
      • Aguarde a mudança

        @Deprecated
        boolean público waitForChange()
        Obsoleto.
        esse método será removido na próxima versão principal.
        Bloqueia o thread atual até que novas alterações no Realm estejam disponíveis ou stopWaitForChange() seja chamado de outro thread. Depois que stopWaitForChange for chamado, todas as chamadas futuras para esse método retornarão falsas imediatamente.
        Retorna:
        true se o Realm foi atualizado para a versão mais recente, false se foi cancelado chamando stopWaitForChange.
        Lançamentos:
        IllegalStateException - se chamar isso de dentro de uma transação ou de um tópico do loop de eventos.
        RealmMigrationNeededException - no digitado Realm se a versão mais recente contiver alterações de esquema incompatíveis.
      • stopWaitForChange

        @Deprecated
        public void stopWaitForChange()
        Obsoleto.
        este método será removido na próxima versão principal
        Faz qualquer waitForChange() atual retornar false imediatamente. Depois que isso for chamado, todas as chamadas futuras para waitForChange retornarão imediatamente false.

        Esse método é seguro para threads e deve _only_ ser chamado de outro thread além daquele que chamou waitForChange.

        Lançamentos:
        IllegalStateException - se a instância Realm já tiver sido fechada.
      • startedTransaction

        public void beginTransaction()
        Inicia uma transação que deve ser fechada por BaseRealm.commitTransaction() ou abortada por BaseRealm.cancelTransaction(). A transação é usada para criar, atualizar e excluir objeto atomicamente dentro de um Realm.

        Antes de iniciar uma transação, a Instância de Realm é atualizada para a versão mais recente, a fim de incluir todas as alterações de outras threads. Esta atualização não trigger nenhum RealmChangeListener registrado.

        Portanto, é recomendável fazer uma query para os itens que devem ser modificados de dentro da transação. Caso contrário, há o risco de que alguns dos resultados tenham sido excluídos ou modificados quando a transação começa.

         
         // Don't do this
         RealmResults<Person> persons = realm.where(Person.class).findAll();
         realm.beginTransaction();
         persons.first().setName("John");
         realm.commitTransaction();
        
         // Do this instead
         realm.beginTransaction();
         RealmResults<Person> persons = realm.where(Person.class).findAll();
         persons.first().setName("John");
         realm.commitTransaction();
         
         

        Aviso: não é possível aninhar transações. Se você iniciar uma transação dentro de uma transação, uma exceção será lançada.

        Lançamentos:
        RealmMigrationNeededException - no digitado Realm se a versão mais recente contiver alterações de esquema incompatíveis.
      • commitTransaction

        public void commitTransaction()
        Todas as alterações desde BaseRealm.beginTransaction() são mantidas no disco e o Realm volta a ser somente leitura. Um evento é enviado para notificar todas as outras Instância de Realm de que ocorreu uma alteração. Quando o evento for recebido, os outros Realms atualizarão seus objetos e RealmResults para refletir as alterações deste commit.
      • cancelTransaction

        public void cancelTransaction()
        Reverte todas as gravações (objetos criados, atualizados ou excluídos) feitas na transação de escrita atual e encerra a transação.

        O Realm volta a ser somente leitura.

        Chamar isso quando não estiver em uma transação gerará uma exceção.

      • IsFrozen

        public boolean isFrozen()
        Retorna se este Realm está congelado ou não.
        Retorna:
        true se o Realm estiver congelado, false se não estiver.
        Veja também:
        freeze()
      • getNumberOfAtiveVersions

        público longo getNumberOfAtiveVersions()
        Retorna o número atual de versões ativas mantidas por este Realm.

        Ter um grande número de versões ativas tem um impacto negativo no tamanho do Arquivo de Realm. Consulte as Perguntas frequentes para obter mais informações.

        Retorna:
        número de versões ativas atualmente mantidas pelo Realm.
        Veja também:
        RealmConfiguration.Builder.maxNumberOfActiveVersions(long)
      • getPath

        string pública getPath()
        Retorna o caminho canônico para onde este Realm é mantido no disco.
        Retorna:
        o caminho canônico para o arquivo Realm.
        Veja também:
        File.getCanonicalPath()
      • getVersion

        público longo getVersion()
        Retorna a versão do esquema para este Realm.
        Retorna:
        a versão do esquema do Arquivo de Realm que faz backup desse Realm.
      • Fechar

        public void close()
        Fecha a Instância de Realm e todos os seus recursos.

        É importante lembrar sempre de fechar as Instância de Realm quando terminar com elas, para não vazar memória, descritores de arquivos ou aumentar o tamanho do Arquivo de Realm fora de medida.

        Especificado por:
        close na interface AutoCloseable
        Especificado por:
        close na interface Closeable
        Lançamentos:
        IllegalStateException - se estiver tentando fechar a partir de outro thread.
      • está fechado

        public boolean isClosed()
        Verifica se a instância Realm já foi fechada.
        Retorna:
        true se fechado, false caso contrário.
        Lançamentos:
        IllegalStateException - se estiver tentando fechar a partir de outro thread.
      • getSubscriptions

        subscriptionSet público getSubscriptions ()
        Retorna o conjunto de assinaturas associado a este Realm. O conjunto de assinaturas define um conjunto de query que definem quais dados são sincronizados entre este Realm e o servidor.

        Esse método só é aplicável a domínios sincronizados que usam Flexible Sync.

        Retorna:
        o conjunto de assinaturas associado a este Realm.
        Lançamentos:
        IllegalStateException - se esse Realm for um Realm local ou um Realm sincronizado baseado em partição.
      • Excluir todos

        public void deleteAll()
        Exclui todos os objetos deste Realm.
        Lançamentos:
        IllegalStateException - se o Realm estiver fechado ou chamado de um thread incorreto.