背景我在我的应用程序中使用Realm。加载数据后,它会进行密集处理,因此处理发生在后台线程上。使用的编码模式是工作单元模式,Realm仅存在于DataManager下的存储库中。这里的想法是每个存储库可以有不同的数据库/文件存储解决方案。我尝试过的下面是一些与我的FooRespository类中的类似代码的示例。这里的想法是获取Realm的一个实例,用于查询Realm中感兴趣的对象,返回它们并关闭Realm实例。请注意,这是同步的,最后将对象从Realm复制到非托管状态。publicObservable>getFoosById(ListfooIds){Realmrealm=Realm.
我将如何查询这样的结构:publicclassAnimalextendsRealmObject{RealmListbirds;}publicclassBirdextendsRealmObject{inttype;RealmListspecies;}RealmInteger是一个具有int值的对象我想找到所有具有Bird的Animal对象,该对象具有value3的种类和那个Bird属于类型2我试过了,但它总是忽略类型:realm.where(Animal.class).equalTo("birds.type",2).equalTo("birds.species.value",3).fin
我正在尝试从Firebase下载对象并将它们存储在Realm中。结合这两个优秀的库时,我遇到了崩溃。我创建了一个非常简单的演示应用程序来说明我的问题。在创建扩展RealmObject的对象时,Firebase似乎感到不安。我可以通过删除RealmObject扩展来完成这项工作,但我必须维护两个相同的对象。随着时间的推移,这变得复杂和令人沮丧,这远非理想。Firebase:FirebaseDatabasedatabase=FirebaseDatabase.getInstance();DatabaseReferencemyRef=database.getReference("players
在假设有100个项目的表中,这是获取最后20个对象的最佳方法。我能想到的一种方法是加载所有对象,反转数组,创建一个新数组并根据结果循环20次填充新数组并返回它。类似如下:publicArrayListgetLastItems(intqty){RealmResultsresults=realm.where(DataObject.class).findAll();Collections.reverse(results);ArrayListarrayList=newArrayList();for(inti=0;i==qty;i++){arrayList.add(results.get(i))
我正在使用Realm在Android上存储我的数据。很棒的框架!现在我遇到的唯一问题是:我的数据库中有一个带有国家/地区ID的数组列表字符串。现在我检索包含与国家/地区关系的饮料。有没有一种方法可以像这样进行查询:String[]ids;realm.where(Drinks.class).equalsTo("country.id",ids);类似的东西?或者我真的需要做一个查询来获取所有饮料然后手动过滤列表吗?编辑:我的类(class):publicclassDrinksextendsRealmObject{@PrimaryKeyprivateStringid;privateStrin
如何限制Realm返回的对象数量?.findAll返回匹配查询的所有行,而.findFirst只返回第一行。但是像前1000这样的东西呢?.findAll可能会返回太多的行,以至于它会消耗太多内存。 最佳答案 很酷的是,使用Realm,您无需担心这一点。当您访问对象及其字段时,查询返回的结果对象会延迟加载。您的对象永远不会被复制,因此只会在内存/磁盘中出现一次。这方面的(当前)实现细节是从查询返回的RealmResults对象只是对匹配对象的引用列表。这些引用是压缩存储的微小数字,因此它们占用的内存非常少。所以即使有100.000个
我想将android应用程序与服务器同步。在服务器中,我通过触发器维护了上次更新日期,因为它使用SQL服务器,但我的android应用程序使用Realm,所以我如何在插入或更新任何行时在字段中设置当前日期时间。任何建议将不胜感激。 最佳答案 用这个realm.beginTransaction();RealmResultshallos=realm.where(ModelClass.class).equalTo('name','hello').findAll();for(ModelClassobject:hallos){object.s
我在Application对象上使用一个静态全局Realm实例(从未关闭),仅用于UI线程,@UiThreadpublicstaticRealmgetRealm(){if(Thread.currentThread()==Looper.getMainLooper().getThread()){returnrealmInstance;}else{Timber.e("IllegalaccesstogetRealmObservable");thrownewIllegalStateException("OnlyUIThreadcanaccessthisrealm");}}和WorkerThrea
我正在使用Realm来存储和检索数据。通常当我们打开一个Realm来存储一些我们喜欢的数据时:Realmrealm=Realm.getDefaultInstance();realm.beginTransaction();//CopytheobjecttoRealmrealm.copyToRealm(myObject);realm.commitTransaction();realm.close();在上述情况下,我正在关闭Realm。但是当我检索一些数据时:RealmResultsresults=Realm.getDefaultInstance().where(MyClass.class
我在RealmAndroid中使用RealmString替代List。但我对RealmChangeListener有疑问。我在许多模型中使用RealmString,例如下面的示例中的Dog、Cat、Chicken。但是,当其中的任何人更改数据时,所有数据也会更改。例如:当我保存Dog->DogChange和CatChange时。我可以通过使用RealmDogString、RealmCatString、RealmChickenString来解决这个问题,但它重复了我的代码。有没有更好的解决方案?这是我的示例代码:publicclassRealmTestActivityextendsApp