问题标签 [realm-java]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1309 浏览

android - 领域中的多态关系

以这种方式制作 TestClass 的目的是能够将任何 ChildA 或 ChildB 对象分配给 TestClass.child_obj,并且仍然能够让 ChildA 和 ChildB 根据需要实现其他接口。

但是,这会导致编译时异常

我们怎样才能达到上述目的呢?

0 投票
0 回答
274 浏览

realm - 从 Realm 查询中获取的元素的顺序是什么?

在 Realm 中执行findAll()findAllAsync()查询时,无需显式排序,例如:

通过RealmResults对象可访问的元素的顺序是什么?

  • @PrimaryKey如果有的话,是按顺序排列的吗?如果是这样,它是上升还是下降?
  • 是首先插入对象的顺序吗?
  • 是随机的吗?
  • 它是不确定的吗?

此外,这是领域核心还是平台特定,例如领域 java领域可可之间的行为是否不同?

0 投票
1 回答
1590 浏览

android - 如何在 Android 上处理 Realm 事务

在几个示例代码中,我看到了如下所示的模式:

问题是——这安全吗?如果“workWithRealmData()”函数抛出异常,事务不会被取消。但无论如何,我们都会在 try-with-resources 的最后阶段关闭 Realm。

更安全的结构可能如下所示:

这看起来更安全 - 但对于所有调用站点的代码看起来也更糟糕。

所以这真的归结为 - 如果 Realm 之后立即关闭,忽略 cancelTransaction 是否安全?如果没有,会出现什么问题?

0 投票
1 回答
172 浏览

realm - 有没有等价于 .equalTo(object) 的东西?

我想编写一个从 中删除给定的函数RealmModelRealm打开和关闭Realm.

Realm在这个删除方法中,我很难在新实例上查询相同的对象。推荐的方法是什么?我什至不知道如何在不手动覆盖每个模型中的方法的情况下获取主键。

0 投票
1 回答
1146 浏览

realm-java - 可以对关系字段求和吗?[使用领域]

我正在尝试寻找一个去SUM关系字段的方法,但总是抛出异常~

那么可以通过使用领域数据库来汇总关系吗?

如果你知道我在哪里写错了,请告诉我,非常感谢:)

假设我有以下数据集:

然后,我猜查询代码是这样的

但总是扔

更新

或者

0 投票
2 回答
954 浏览

java - Android领域对象排序列表

如何按两个参数对RealmObjects列表进行排序?例如第一个参数是名称(需要按字母顺序排序),第二个参数有点复杂并且与 3 个日期相关:我有一个范围日期(例如fromDate currentDatetoDate)。需要将今天发生的所有项目放在列表的首位。也不要忘记按字母顺序排序。

0 投票
0 回答
235 浏览

android - 领域不更新 ONE-MANY 关系 Android 中的现有数据

我已经使用领域大约一年多了,在许多情况下,领域是构建 Android 数据库而不是使用 SQLite 的不错选择。我一直在将领域用于一对一、一对多的关系,这对它有好处。不过,一会儿就好了。我发现领域不会以一对多的关系更新我现有的数据。这就是我所做的。

此代码用于填充骨架数据或单元测试

正如您看到的 PackModel 列表,每个 PackModel 都有自己的食物。所以,我在 Realm 中编写如下代码。

我在每个 PackObject 中有多个 FoodObject,我在这里做错了什么?我也使用领域.beginTransaction。realm.beginTransaction 和execute* 一样,只是execute* 是线程安全的。

我也使用 realm.insertOrUpdate(obj),但结果相同。

注意:我已阅读有关它的领域文档。所以不要判断我没有阅读他们的文档。

这是我的代码报告https://github.com/radiityagumay/realm-bug

在此处输入图像描述

谢谢

0 投票
1 回答
3242 浏览

android - RealmError:领域内存不足

我使用 Realm 3.0.0 作为我的 Android 应用程序的数据库。这就像一个问卷调查应用程序,用户在应用程序内部进行了很多导航。当我连续使用该应用程序(来回)时,出现以下错误:

现在我知道造成这种情况的主要原因是没有关闭 Realm 实例。但我已经检查过很多次了。我很肯定我会关闭我打开的每个实例。

该应用程序有许多 Activity 和 Fragment,它们都在其上获取 Realm 实例onCreate并在其onDestroy. 还有其他后台网络作业运行以上传获取 Realm 实例的数据。这些作业在完成运行或取消时关闭其 Realm 实例。

以上所有内容都是通过 Dagger 2 通过注入获得他们的 Realm 实例:

配置也在同一个 Dagger 模块中提供。

更具体地说,问卷由 ViewPager 中显示的许多问题片段组成。每个片段都被注入一个领域。给定问题片段中的许多交互将数据写入数据库(一些异步,一些阻塞)。这些片段还查询数据库onResume以获取其更新的数据。其中一些数据也通过realm.copyFromRealm(). 现在,在这些发生的任何给定时间,上传作业很可能正在运行并从数据库读取数据并将其上传到服务器。上传作业完成后,它会写入数据库。

我认为在给定时刻,我最多可以有 7-12 个片段/活动在 UI 线程上持有领域引用。以及 0-3 个其他线程(后台作业)上的 0-6 个其他引用。

此外,我在每次应用程序启动时压缩我的领域数据库Realm.compactRealm(realmConfiguration)(也许作为一个单独的问题,这似乎并没有始终如一地完成它的工作)。

上面我试图描述性地描述我的 Realm 用法,而没有详细说明。现在我的问题是,当用户过度使用应用程序时(在活动/片段之间来回切换(领域注入 + DB 读取查询),上传数据(领域注入 + DB 读写查询)),我得到上面发布的内存不足错误。

我也在使用 Leak Canary,它没有检测到任何泄漏。(不确定是否可以)

我是否以不应该使用的方式使用 Realm?我应该关闭 Realm 实例onPause而不是onDestroy?我是否应该在一个活动中只有一个领域实例,并让它的所有片段(在我的情况下最多 5 个)都使用这个实例?我可以在我的应用程序中进行哪些更改,也许我的应用程序架构可以解决这个问题?

感谢您尝试解决此问题的任何帮助。

编辑:我在后台线程中共享领域打开关闭逻辑。

我所有的工作共享相同的领域使用情况,如下所示:领域是通过以下方式惰性注入的:

@Inject protected transient Lazy<Realm> lazyRealm;

领域对象引用保存在private transient Realm realm;字段中。我正在使用Android Priority Job Queue。添加作业时:

并且当作业运行时,领域会被检索一次,并且此方法的每个可能的结束都调用realm.close()

如您所见,就我而言,这些后台线程确实正确关闭了它们的领域实例。

0 投票
3 回答
496 浏览

android - 解组时出现 ClassNotFoundException:io.realm.NeedRealmProxy$$Parcelable

从片段运行这段代码时出现此错误HomeFragment

这是Need.java

这是RealmListParcelConverter.java

错误

android.os.BadParcelableException:解组时的 ClassNotFoundException:io.realm.NeedRealmProxy$$Parcelable 在 android.os.Parcel.readException(Parcel.java:1427) 在 android.os.Parcel.readException(Parcel.java:1379) 在 android .app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1761) 在 android.app.Instrumentation.execStartActivity(Instrumentation.java:1411) 在 android.app.Activity.startActivityForResult(Activity.java:3351) 在 android.support.v4。 app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50) 在 android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79) 在 android.support.v4.app.ActivityCompatJB.startActivityForResult(ActivityCompatJB.java:30)在 android.support.v4.app.ActivityCompat.startActivityForResult(ActivityCompat.java:146) 在 android.support.v4.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:1047) 在 android.support.v4.app 在 android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:932) .Fragment.startActivity(Fragment.java:940) 在 com.nkapsi.ui.fragment.HomeFragment.onTaskClick(HomeFragment.java:201)

0 投票
1 回答
559 浏览

java - 片段中的领域导致 NullPointerException

当片段的活动扩展控制领域的基本活动时,我对如何在片段中处理领域感到困惑。

换句话说,我有这个结构:

基本活动 -> 用户活动 -> 基本片段 -> 片段

一切正常,直到我退出活动(即返回上一个活动)。我收到此错误:

java.lang.RuntimeException:无法销毁活动 {UserActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void io.realm.Realm.close()”

...

原因:java.lang.NullPointerException:尝试在 BaseFragment.onDestroyView 的空对象引用上调用虚拟方法“void io.realm.Realm.close()”

我的基本活动:

我的主要活动(创建片段的地方):

我所有的片段都扩展了一个基本片段。这是我的基本片段:

是什么导致了问题?我管理 Realm 是否不当?