Tipo de anotação RealmModule
Nesta página
io.realm.annotations
Interfaces implementadas:
Por padrão, um Realm pode armazenar todas as classes que estendem o RealmObject em um projeto. No entanto, se você quiser restringir um Realm para conter apenas um subconjunto de classes ou quiser compartilhá-lo entre um projeto de biblioteca e um projeto de aplicativo, use um RealmModule.Um RealmModule é uma collection de classes que estendem o RealmObject que podem ser combinadas com outros RealmModles para criar o esquema para um Realm. Isso facilita o controle da versão e a migração desses Realms.
Um RealmModule pode ser um módulo de biblioteca ou um módulo de aplicativo. A distinção é feita definindo library = true
. A configuração library = true
normalmente só é relevante para autores de bibliotecas. Veja abaixo mais detalhes.
Atualmente, não é possível ter várias declarações do RealmModule em um único arquivo. Se você tiver mais de um RealmModule, terá que usar arquivos Java separados para cada módulo.
Módulos e bibliotecas do Realm
O comportamento padrão do Realm é criar automaticamente um RealmModule chamado DefaultRealmModule
que contém todas as classes que estendem o RealmObject em um projeto. Este módulo é automaticamente conhecido pelo Realm.
Esse comportamento é problemático ao combinar um projeto de biblioteca e um projeto de aplicativo que ambos usam o Realm. Isso ocorre porque o DefaultRealmModule
será criado para o projeto da biblioteca e o projeto do aplicativo, o que fará com que o projeto falhe com erros de definição de classe duplicados.
Os autores da biblioteca são responsáveis por evitar esse conflito usando módulos explícitos em que library = true
está definido. Isso desabilita a geração do DefaultRealmModule para o projeto da biblioteca e permite que a biblioteca seja incluída no projeto do aplicativo que também usa o Realm. Isso significa que os projetos de bibliotecas que usam o Realm internamente são obrigados a especificar um módulo específico usando RealmConfiguration.modules()
.
Os desenvolvedores de aplicativos não são obrigados a especificar nenhum módulo, pois implicitamente usam o DefaultRealmModule
, mas agora têm a opção de adicionar as classes do projeto de biblioteca ao seu esquema usando RealmConfiguration.addModule()
.
Resumo do elemento opcional
Modificador e tipo | Elemento opcional e descrição |
---|---|
booleanopúblico | Em vez de adicionar todas as classes do Realm manualmente a um módulo, defina este booleano como true para incluir automaticamente todas as classes do Realm neste projeto. |
política pública de nomeação de domínios | A política de nomenclatura foi aplicada a todas as classes que fazem parte deste módulo. |
classe pública | Especifica as classes que estendem o RealmObject que devem fazer parte deste módulo. |
política pública de nomeação de domínios | A política de nomenclatura aplicada a todos os nomes de campo em todas as classes que fazem parte deste módulo. |
booleanopúblico | Definir isso como verdadeiro marcará este módulo como um módulo de biblioteca. |
Detalhes do elemento
allClasses |
---|
Em vez de adicionar todas as classes do Realm manualmente a um módulo, defina este booleano como true para incluir automaticamente todas as classes do Realm neste projeto. Isso não inclui classes de outras bibliotecas que devem ser expostas usando seu próprio módulo. Configurar Padrão:
|
classNamingPolicy |
---|
A política de nomenclatura aplicada a todas as classes que fazem parte deste módulo. A política padrão é RealmNamingPolicy.NO_POLICY . Para definir uma política de nomenclatura para todos os campos das classes, use fieldNamingPolicy() . É possível substituir a política de nomenclatura especificada no módulo em cada classe usando a anotação RealmClass . Se uma classe fizer parte de vários módulos, a mesma política de nomenclatura deverá ser aplicada a ambos os módulos, caso contrário, um erro será gerado. Padrão:
|
classes |
---|
Especifica as classes que estendem o RealmObject que devem fazer parte deste módulo. Somente classes neste projeto podem ser incluídas. Classes de outras bibliotecas devem ser expostas usando seu próprio módulo. Configurar Padrão:
|
fieldNamingPolicy |
---|
A política de nomenclatura aplicada a todos os nomes de campo em todas as classes que fazem parte deste módulo. A política padrão é RealmNamingPolicy.NO_POLICY . Para definir uma política de nomenclatura para nomes de classe , use classNamingPolicy() . É possível substituir esta política de nomenclatura utilizando RealmClass.fieldNamingPolicy() ou RealmField.name() . Padrão:
|
Internas |
---|
Definir isso como verdadeiro marcará este módulo como um módulo de biblioteca. Isso evitará que o Realm gere o Padrão:
|