Docs Menu
Docs Home
/ /
io.realm

Clase RealmObject

java.lang.Object
io.realm.RealmObject

Interfaces implementadas:

  • io.realm.RealmModel

En Realm, defines tus clases RealmObject creando subclases de RealmObject y añadiendo campos que se conservarán. Luego, creas tus objetos dentro de un Realm y usas tus subclases personalizadas en lugar de usar la clase RealmObject directamente. Un procesador de anotaciones creará una clase proxy para tu subclase RealmObject.

Se admiten los siguientes tipos de datos de campo:

  • booleano/booleano

  • corto/corto

  • int/Entero

  • largo/Largo

  • float/Float

  • doble/Doble

  • byte[]

  • String

  • fecha

  • UUID

  • org.bson.types.Decimal128

  • org.bson.types.ObjectId

  • Cualquier subclase de RealmObject

  • Lista de reinos

  • Diccionario del reino

Los tipos short , int y long se asignan a long cuando se almacenan dentro de un reino.

La única restricción de un RealmObject es que los campos no pueden ser finales ni volátiles. Se permite cualquier método, así como campos públicos. Al proporcionar constructores personalizados, se debe declarar un constructor público sin argumentos.

Los campos anotados con io.realm.annotations.Ignore no tienen estas restricciones y no requieren ni un captador ni un definidor.

Realm creará índices para los campos anotados con io.realm.annotations.Index. Esto acelerará las consultas, pero tendrá un impacto negativo en las inserciones y actualizaciones.

Un RealmObject no se puede pasar entre diferentes subprocesos.

Tip

Constructor y descripción
Modificador y Tipo
Método y descripción

vacío estático público

Agrega un detector de cambios a un RealmObject que se activará si se modifica algún campo de valor o un campo RealmObject referenciado, o si se modifica el campo RealmList en sí.

vacío estático público

Agrega un detector de cambios a un RealmObject para obtener información detallada sobre los cambios.

vacío final público

Agrega un detector de cambios a este RealmObject que se activará si se modifica algún campo de valor o un campo RealmObject referenciado, o si se modifica el campo RealmList en sí.

vacío final público

Agrega un detector de cambios a este RealmObject para obtener información detallada sobre los cambios.

público estático <any>

E object
)

Devuelve un Observable Rx que monitorea los cambios en este RealmObject.

público final <any>

Devuelve un Observable Rx que monitorea los cambios en este RealmObject.

público estático <any>

E object
)

Devuelve un RxJava Flowable que monitorea los cambios en este RealmObject.

público final <any>

asFlowable <E >()

Devuelve un RxJava Flowable que monitorea los cambios en este RealmObject.

vacío estático público

E object
)

Elimina el objeto del reino con el que está asociado actualmente.

vacío final público

Elimina el objeto del reino al que está asociado actualmente.

público estático E

freeze <E >(
E object
)

Devuelve una instantánea congelada de este objeto.

final pública E

freeze <E >()

Devuelve una instantánea congelada de este objeto.

devuelve la instancia de Realm donde model pertenece.

public Realm

Devuelve la instancia de Realm donde pertenece este RealmObject.

booleano estático público

isFrozen <E >(
E object
)

Devuelve si este RealmObject está congelado o no.

booleanofinal público

Devuelve si este RealmObject está congelado o no.

booleano estático público

isLoaded <E >(
E object
)

Comprueba si la consulta utilizada para encontrar este RealmObject se ha completado.

booleanofinal público

Comprueba si la consulta utilizada para encontrar este RealmObject se ha completado.

booleano estático público

isManaged <E >(
E object
)

Comprueba si este objeto está administrado por Realm.

booleanopúblico

Comprueba si este objeto está administrado por Realm.

booleano estático público

isValid <E >(
E object
)

Comprueba si el RealmObject aún es válido para su uso, es decir, si el RealmObject no se ha eliminado ni si io.realm.Realm se ha cerrado.

booleanofinal público

Comprueba si el RealmObject aún es válido para su uso, es decir, si el RealmObject no se ha eliminado ni si io.realm.Realm se ha cerrado.

booleano estático público

load <E >(
E object
)

Realiza un bloqueo de consultas asincrónicas.

booleanofinal público

load ()

Realiza un bloqueo de consultas asincrónicas.

vacío estático público

Elimina todos los oyentes registrados del RealmObject indicado.

vacío final público

Elimina todos los oyentes registrados.

vacío estático público

Elimina un oyente previamente registrado en el RealmObject indicado.

vacío estático público

Elimina un oyente previamente registrado en el RealmObject indicado.

vacío final público

Elimina un oyente previamente registrado.

vacío final público

Elimina un oyente previamente registrado.

  • Métodos heredados de la clase getClasshashCodeequalsclonetoStringnotifynotifyAllwaitwaitwaitjava.lang.Object:,,,,,,,,,, finalize

public RealmObject ()

public static void addChangeListener <E >(
)

Añade un detector de cambios a un RealmObject que se activará si se modifica cualquier campo de valor, un campo RealmObject referenciado o el propio campo RealmList. Registrar un detector de cambios no impedirá que el RealmObject subyacente sea objeto de recolección de basura. Si el RealmObject es objeto de recolección de basura, el detector de cambios dejará de activarse. Para evitar esto, mantenga una referencia fuerte durante el tiempo que sea necesario, por ejemplo, en una variable de clase.

public class MyActivity extends Activity {
private Person person; // Strong reference to keep listeners alive
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
person = realm.where(Person.class).findFirst();
person.addChangeListener(new RealmChangeListener<Person>() {
@Override
public void onChange(Person person) {
// React to change
}
});
}
}

Parámetros

  • object - RealmObject al que agregar el oyente.

  • listener - el oyente de cambios que debe ser notificado.

Lanzamientos

public static void addChangeListener <E >(
)

Añade un detector de cambios a un RealmObject para obtener información detallada sobre los cambios. El detector se activará si se modifica algún campo de valor, un campo RealmObject referenciado o el propio campo RealmList. Registrar un detector de cambios no impedirá que el RealmObject subyacente sea objeto de recolección de basura. Si el RealmObject es objeto de recolección de basura, el detector de cambios dejará de activarse. Para evitar esto, mantenga una referencia fuerte durante el tiempo que sea necesario, por ejemplo, en una variable de clase.

public class MyActivity extends Activity {
private Person person; // Strong reference to keep listeners alive
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
person = realm.where(Person.class).findFirst();
person.addChangeListener(new RealmObjectChangeListener<Person>() {
@Override
public void onChange(Person person, ObjectChangeSet changeSet) {
// React to change
}
});
}
}

Parámetros

  • object - RealmObject al que agregar el oyente.

  • listener - el oyente de cambios que debe ser notificado.

Lanzamientos

public final void addChangeListener <E >(
)

Añade un detector de cambios a este RealmObject que se activará si se modifica algún campo de valor, un campo RealmObject referenciado o el propio campo RealmList. Registrar un detector de cambios no impedirá que el RealmObject subyacente sea objeto de recolección de basura. Si el RealmObject es objeto de recolección de basura, el detector de cambios dejará de activarse. Para evitar esto, mantenga una referencia fuerte durante el tiempo que sea necesario, por ejemplo, en una variable de clase.

public class MyActivity extends Activity {
private Person person; // Strong reference to keep listeners alive
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
person = realm.where(Person.class).findFirst();
person.addChangeListener(new RealmChangeListener<Person>() {
@Override
public void onChange(Person person) {
// React to change
}
});
}
}

Parámetros

  • listener - el oyente de cambios que debe ser notificado.

Lanzamientos

Añade un detector de cambios a este RealmObject para obtener información detallada sobre los cambios. El detector se activará si se modifica algún campo de valor, un campo RealmObject referenciado o el propio campo RealmList. Registrar un detector de cambios no impedirá que el RealmObject subyacente sea objeto de recolección de basura. Si el RealmObject es objeto de recolección de basura, el detector de cambios dejará de activarse. Para evitar esto, mantenga una referencia fuerte durante el tiempo que sea necesario, por ejemplo, en una variable de clase.

public class MyActivity extends Activity {
private Person person; // Strong reference to keep listeners alive
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
person = realm.where(Person.class).findFirst();
person.addChangeListener(new RealmObjectChangeListener<Person>() {
@Override
public void onChange(Person person, ObjectChangeSet changeSet) {
// React to change
}
});
}
}

Parámetros

  • listener - el oyente de cambios que debe ser notificado.

Lanzamientos

public static <any> asChangesetObservable <E >(
E object
)

Devuelve un Observable Rx que monitoriza los cambios en este RealmObject. Emitirá el RealmObject actual al suscribirse. Por cada actualización del RealmObject, se enviará un par compuesto por el RealmObject y el ObjectChangeSet. El conjunto de cambios será null la primera vez que se emita el RealmObject.

El RealmObject se emitirá continuamente a medida que se actualice: onComplete nunca se llamará.

Los elementos emitidos desde los Observables de Realm están congelados (ver freeze()). Esto significa que son inmutables y se pueden leer en cualquier hilo.

Los observables de Realm siempre emiten elementos desde el hilo que contiene el Realm activo. Esto significa que, si necesita realizar más procesamiento, se recomienda observar los valores en un programador de cómputo:

obj.asChangesetObservable()
.observeOn(Schedulers.computation())
.map((rxObj, changes) -> doExpensiveWork(rxObj, changeså))
.observeOn(AndroidSchedulers.mainThread())
.subscribe( ... );

Parámetros

  • object Clase RealmObject que se observa. Debe ser esta clase o sus supertipos.

Devuelve

Observable de RxJava que solo llama a onNext . Nunca llamará a onComplete ni a OnError .

Lanzamientos

public final <any> asChangesetObservable <E >()

Devuelve un Observable Rx que monitoriza los cambios en este RealmObject. Emitirá el RealmObject actual al suscribirse. Por cada actualización del RealmObject, se enviará un par compuesto por el RealmObject y el ObjectChangeSet. El conjunto de cambios será null la primera vez que se emita el RealmObject.

El RealmObject se emitirá continuamente a medida que se actualice: onComplete nunca se llamará.

Los elementos emitidos desde los Observables de Realm están congelados (ver freeze()). Esto significa que son inmutables y se pueden leer en cualquier hilo.

Los observables de Realm siempre emiten elementos desde el hilo que contiene el Realm activo. Esto significa que, si necesita realizar más procesamiento, se recomienda observar los valores en un programador de cómputo:

obj.asChangesetObservable()
.observeOn(Schedulers.computation())
.map((rxObj, changes) -> doExpensiveWork(rxObj, changeså))
.observeOn(AndroidSchedulers.mainThread())
.subscribe( ... );

Devuelve

Observable de RxJava que solo llama a onNext . Nunca llamará a onComplete ni a OnError .

Lanzamientos

public static <any> asFlowable <E >(
E object
)

Devuelve un objeto fluido de RxJava que monitoriza los cambios en este objeto RealmObject. Emitirá el objeto actual al suscribirse. Las actualizaciones del objeto se emitirán continuamente a medida que se actualice el objeto RealmObject; nunca se llamará a onComplete.

Al encadenar un observable RealmObject, utilice obj.<MyRealmObjectClass>asFlowable() para pasar información de tipo; de lo contrario, el tipo de los siguientes observables será RealmObject .

Los elementos emitidos desde Realm Flowables están congelados (ver freeze()). Esto significa que son inmutables y se pueden leer en cualquier hilo.

Los flowables de Realm siempre emiten elementos desde el hilo que contiene el Realm activo. Esto significa que, si necesita realizar más procesamiento, se recomienda observar los valores en un programador de cómputo:

obj.asFlowable()
.observeOn(Schedulers.computation())
.map((rxObj) -> doExpensiveWork(rxObj))
.observeOn(AndroidSchedulers.mainThread())
.subscribe( ... );

Si desea que asFlowable() deje de emitir elementos, puede indicarle a RxJava que emita solo el primer elemento utilizando el operador first():

obj.asFlowable()
.filter(obj -> obj.isLoaded())
.first()
.subscribe( ... ) // You only get the object once

Parámetros

  • object Clase RealmObject que se observa. Debe ser esta clase o sus supertipos.

Devuelve

Observable de RxJava que solo llama a onNext . Nunca llamará a onComplete ni a OnError .

Lanzamientos

public final <any> asFlowable <E >()

Devuelve un RxJava Flowable que supervisa cambios en este RealmObject. Emitirá el objeto actual cuando se suscriba. Las actualizaciones de los objetos se emitirán continuamente a medida que se actualice el RealmObject - onComplete nunca se llamará.

Al encadenar un objeto fluido RealmObject, utilice obj.<MyRealmObjectClass>asFlowable() para pasar información de tipo; de lo contrario, el tipo de los siguientes observables será RealmObject .

Los elementos emitidos desde Realm Flowables están congelados (ver freeze()). Esto significa que son inmutables y se pueden leer en cualquier hilo.

Los flowables de Realm siempre emiten elementos desde el hilo que contiene el Realm activo. Esto significa que, si necesita realizar más procesamiento, se recomienda observar los valores en un programador de cómputo:

obj.asFlowable()
.observeOn(Schedulers.computation())
.map((rxObj) -> doExpensiveWork(rxObj))
.observeOn(AndroidSchedulers.mainThread())
.subscribe( ... );

Si desea que asFlowable() deje de emitir elementos, puede indicarle a RxJava que solo emita el primer elemento utilizando el operador first():

obj.asFlowable()
.filter(obj -> obj.isLoaded())
.first()
.subscribe( ... ) // You only get the object once

Parámetros de tipo

  • E Clase RealmObject que se observa. Debe ser esta clase o sus supertipos.

Devuelve

Observable de RxJava que solo llama a onNext . Nunca llamará a onComplete ni a OnError .

Lanzamientos

public static void deleteFromRealm <E >(
E object
)

Elimina el objeto del reino con el que está asociado actualmente. Después de llamar a este método, el objeto no será válido y cualquier operación (lectura o escritura) realizada en él fallará con una IllegalStateException.

Lanzamientos

public final void deleteFromRealm ()

Elimina el objeto del reino al que está asociado actualmente. Después de llamar a este método, el objeto no será válido y cualquier operación (lectura o escritura) realizada en él fallará con una IllegalStateException.

Lanzamientos

public static E freeze <E >(
E object
)

Devuelve una instantánea congelada de este objeto. Esta copia congelada puede leerse y consultarse desde cualquier hilo sin generar una excepción IllegalStateException.

Congelar un RealmObject también crea un Realm congelado que tiene su propio ciclo de vida, pero si el Realm activo que generó la colección original está completamente cerrado (es decir, todas las instancias en todos los hilos están cerradas), el Realm y el objeto congelados también se cerrarán.

Los objetos congelados se pueden consultar de forma normal, pero intentar mutarlos de cualquier forma o intentar registrar un oyente arrojará una IllegalStateException.

Nota: Mantener un gran número de objetos congelados con diferentes versiones activas puede tener un impacto negativo en el tamaño del archivo del Realm. Para evitar una situación así, es posible establecer RealmConfiguration.Builder.maxNumberOfActiveVersions(long) .

Devuelve

una copia congelada de este objeto.

Lanzamientos

public final E freeze <E >()

Devuelve una instantánea congelada de este objeto. Esta copia congelada puede leerse y consultarse desde cualquier hilo sin generar una excepción IllegalStateException.

Congelar un RealmObject también crea un Realm congelado que tiene su propio ciclo de vida, pero si el Realm activo que generó la colección original está completamente cerrado (es decir, todas las instancias en todos los hilos están cerradas), el Realm y el objeto congelados también se cerrarán.

Los objetos congelados se pueden consultar de forma normal, pero intentar mutarlos de cualquier forma o intentar registrar un oyente arrojará una IllegalStateException.

Nota: Mantener un gran número de objetos congelados con diferentes versiones activas puede tener un impacto negativo en el tamaño del archivo del Realm. Para evitar una situación así, es posible establecer RealmConfiguration.Builder.maxNumberOfActiveVersions(long) .

Devuelve

una copia congelada de este objeto.

Lanzamientos

public static Realm getRealm (
)

devuelve la instancia de Realm donde model pertenece.

No debe llamar a Realm.close() contra la instancia devuelta.

Parámetros

Devuelve

Instancia de reino donde model pertenece o null si model no está administrado.

Lanzamientos

public Realm getRealm ()

Devuelve la instancia de Realm donde pertenece este RealmObject.

No debe llamar a Realm.close() contra la instancia devuelta.

Devuelve

Instancia del reino al que pertenece este objeto o null si este objeto no está administrado.

Lanzamientos

public static boolean isFrozen <E >(
E object
)

Devuelve si este RealmObject está congelado o no.

Devuelve

true si el RealmObject está congelado, false si no lo está.

public final boolean isFrozen ()

Devuelve si este RealmObject está congelado o no.

Devuelve

true si el RealmObject está congelado, false si no lo está.

public static boolean isLoaded <E >(
E object
)

Comprueba si la consulta utilizada para encontrar este RealmObject se ha completado. Los métodos asíncronos como RealmQuery.findFirstAsync() devuelven un RealmObject que representa el resultado futuro de la RealmQuery. En este sentido, puede considerarse similar a java.util.concurrent.Future.

Una vez isLoaded() que true devuelve, el objeto representa el resultado de la consulta incluso si esta no encuentra ningún objeto que coincida con los parámetros de la consulta. En este caso,RealmObject se convertirá en un objeto "null".

Los objetos "Null"null representan. Se lanza una excepción si se llama a cualquier método de acceso, por lo que es importante comprobar también isValid() antes de llamar a cualquier método. Un patrón común es:

Person person = realm.where(Person.class).findFirstAsync();
RealmObject.isLoaded(person); // == false
RealmObject.addChangeListener(person, new RealmChangeListener() {
@Override
public void onChange(Person person) {
RealmObject.isLoaded(person); // always true here
if (RealmObject.isValid(person)) {
// It is safe to access the person.
}
}
});

Los objetos Realm sincrónicos son bloqueantes por definición, por lo que este método siempre devolverá true. Este método devolverá true si se invoca en un objeto no administrado (creado fuera de Realm).

Parámetros

  • object -RealmObject a comprobar.

Devuelve

true si la consulta se ha completado, false si la consulta está en curso.

public final boolean isLoaded ()

Comprueba si la consulta utilizada para encontrar este RealmObject se ha completado. Los métodos asíncronos como RealmQuery.findFirstAsync() devuelven un RealmObject que representa el resultado futuro de la RealmQuery. En este sentido, puede considerarse similar a java.util.concurrent.Future.

Una vez isLoaded() que true devuelve, el objeto representa el resultado de la consulta incluso si esta no encuentra ningún objeto que coincida con los parámetros de la consulta. En este caso,RealmObject se convertirá en un objeto "null".

Los objetos "Null"null representan. Se lanza una excepción si se llama a cualquier método de acceso, por lo que es importante comprobar también isValid() antes de llamar a cualquier método. Un patrón común es:

Person person = realm.where(Person.class).findFirstAsync();
person.isLoaded(); // == false
person.addChangeListener(new RealmChangeListener() {
@Override
public void onChange(Person person) {
person.isLoaded(); // Always true here
if (person.isValid()) {
// It is safe to access the person.
}
}
});

Los objetos Realm sincrónicos son bloqueantes por definición, por lo que este método siempre devolverá true. Este método devolverá true si se invoca en un objeto no administrado (creado fuera de Realm).

Devuelve

true si la consulta se ha completado, false si la consulta está en curso.

public static boolean isManaged <E >(
E object
)

Comprueba si este objeto está administrado por Realm. Un objeto administrado es simplemente un contenedor de los datos del archivo Realm subyacente. En los subprocesos de Looper, un objeto administrado se actualiza en tiempo real para que siempre apunte a los datos más recientes. Es posible registrar un detector de cambios mediante addChangeListener(RealmModel, RealmChangeListener) para recibir notificaciones cuando se produzcan cambios. Los objetos administrados están confinados en subprocesos, por lo que no se puede acceder a ellos desde otros subprocesos que no sean el que los creó.

Si este método devuelve false , el objeto no está administrado. Un objeto no administrado es un objeto Java normal, por lo que puede analizarse libremente entre subprocesos. Sin embargo, sus datos no están conectados al dominio subyacente, por lo que no se actualizarán en tiempo real.

Es posible crear un objeto administrado a partir de uno no administrado mediante Realm.copyToRealm(RealmModel, ImportFlag...). Un objeto no administrado se puede crear a partir de un objeto administrado mediante Realm.copyFromRealm(RealmModel).

Devuelve

true si el objeto está administrado, false si no está administrado.

public boolean isManaged ()

Comprueba si este objeto está administrado por Realm. Un objeto administrado es simplemente un contenedor de los datos del archivo Realm subyacente. En los subprocesos de Looper, un objeto administrado se actualiza en tiempo real para que siempre apunte a los datos más recientes. Es posible registrar un detector de cambios mediante addChangeListener(RealmChangeListener) para recibir notificaciones cuando se produzcan cambios. Los objetos administrados están confinados en subprocesos, por lo que no se puede acceder a ellos desde otros subprocesos que no sean el que los creó.

Si este método devuelve false , el objeto no está administrado. Un objeto no administrado es un objeto Java normal, por lo que puede analizarse libremente entre subprocesos. Sin embargo, sus datos no están conectados al dominio subyacente, por lo que no se actualizarán en tiempo real.

Es posible crear un objeto administrado a partir de uno no administrado mediante Realm.copyToRealm(RealmModel, ImportFlag...). Un objeto no administrado se puede crear a partir de un objeto administrado mediante Realm.copyFromRealm(RealmModel).

Devuelve

true si el objeto está administrado, false si no está administrado.

public static boolean isValid <E >(
E object
)

Comprueba si el objeto RealmObject sigue siendo válido, es decir, si no se ha eliminado ni se ha cerrado io.realm.Realm. Siempre devolverá true para objetos no administrados.

Parámetros

  • object - RealmObject para comprobar la validez.

Devuelve

true si el objeto aún es accesible o es un objeto no administrado, false en caso contrario.

public final boolean isValid ()

Comprueba si el objeto RealmObject sigue siendo válido, es decir, si no se ha eliminado ni se ha cerrado io.realm.Realm. Siempre devolverá true para objetos no administrados.

Tenga en cuenta que esto se puede utilizar para comprobar la validez de ciertas condiciones, como por ejemplo, ser null cuando se observa.

realm.where(BannerRealm.class).equalTo("type", type).findFirstAsync().asFlowable()
.filter(result.isLoaded() && result.isValid())
.first()

Devuelve

true si el objeto aún es accesible o es un objeto no administrado, false en caso contrario.

public static boolean load <E >(
E object
)

Bloquea una consulta asincrónica. Esto también activará cualquier escucha registrada. Nota: Devolverá true si se llama para un objeto no administrado (creado fuera de Realm).

Parámetros

  • object - RealmObject para forzar la carga.

Devuelve

true si completó exitosamente la consulta, false en caso contrario.

public final boolean load ()

Bloquea una consulta asincrónica. Esto también activará cualquier escucha registrada. Nota: Devolverá true si se llama para un objeto no administrado (creado fuera de Realm).

Devuelve

true si completó exitosamente la consulta, false en caso contrario.

public static void removeAllChangeListeners <E >(
E object
)

Elimina todos los oyentes registrados del RealmObject indicado.

Parámetros

  • object - RealmObject del que se eliminarán todos los oyentes.

Lanzamientos

public final void removeAllChangeListeners ()

Elimina todos los oyentes registrados.

public static void removeChangeListener <E >(
)

Elimina un oyente previamente registrado en el RealmObject indicado.

Parámetros

  • object - RealmObject del que se eliminará el oyente.

  • listener - la instancia que se va a eliminar.

Lanzamientos

public static void removeChangeListener <E >(
)

Elimina un oyente previamente registrado en el RealmObject indicado.

Parámetros

  • object - RealmObject del que se eliminará el oyente.

  • listener - la instancia que se va a eliminar.

Lanzamientos

Elimina un oyente previamente registrado.

Parámetros

  • listener - la instancia que se va a eliminar.

Lanzamientos

Elimina un oyente previamente registrado.

Parámetros

  • listener - la instancia que se va a eliminar.

Lanzamientos

Volver

Modelo de reino

En esta página