在{
"payment_methods": [
{
"payment_method_id": "5f384f7d-8323-4207-a297-51c571234a8c",
"type": "baidu_wallet",
"description": "***53",
},
{
"payment_method_id": "f33847de-8113-4587-c307-51c2d13a823c",
"type": "alipay",
"description": "ga***@uber.com",
},
{
"payment_method_id": "f43847de-8113-4587-c307-51c2d13a823c",
"type": "visa",
"description": "***23"
},
{
"payment_method_id": "517a6c29-3a2b-45cb-94a3-35d679909a71",
"type": "american_express",
"description": "***05"
},
{
"payment_method_id": "f53847de-8113-4587-c307-51c2d13a823c",
"type": "business_account",
"description": "Late Night Ride"
}
],
"last_used": "f53847de-8113-4587-c307-51c2d13a823c"
}
中,有三种方法Realm
,isValid()
,isLoaded()
。
我想知道何时应该使用哪种方法?
答案 0 :(得分:3)
FROM DOCS
- 醇>
isValid()
检查RealmObject
是否仍然有效,即RealmObject尚未删除,Realm是否已关闭。对于非托管对象,它将始终返回true。
请注意,这可用于检查某些条件的有效性,例如在观察时为空。
示例:
// With RealmObject
yourRealmObject.isValid();
- 醇>
isLoaded()
RealmObject
的查询是否已完成。 3。
isManaged()
检查此对象是否由Realm管理。托管对象只是底层Realm文件中数据的包装。在Looper线程上,托管对象将进行实时更新,因此它始终指向最新数据。可以使用addChangeListener(RealmModel,RealmChangeListener)注册更改侦听器,以便在发生更改时得到通知。托管对象是线程限制的,因此无法从创建它们的其他线程访问它们。
如果此方法返回false,则该对象不受管理。非托管对象只是一个普通的Java对象,因此可以跨线程自由解析,但对象中的数据没有连接到底层Realm,因此它不会实时更新。
答案 1 :(得分:3)
<强>的isValid 强>
public final boolean isValid()
检查RealmObject是否仍然有效,即RealmObject尚未删除,Realm是否已关闭。对于非托管对象,它将始终返回true。
两件事使RealmObject失效:
- 关闭它所属的Realm实例 并删除任何线程上的对象(如果您正在进行自动更新) looper thread)
<强> isLoaded 强>
public final boolean isLoaded()
检查用于查找此RealmObject的查询是否已完成。 像RealmQuery.findFirstAsync()这样的异步方法返回一个表示RealmQuery未来结果的RealmObject。在这方面可以认为它类似于未来。
一旦isLoaded()返回true,即使查询没有找到与查询参数匹配的任何对象,该对象也会表示查询结果。在这种情况下,RealmObject将成为&#34; null&#34;对象的
<强> isManaged 强>
public static boolean isManaged(E object)
检查此对象是否由Realm管理。托管对象只是底层Realm文件中数据的包装。在Looper线程上,托管对象将进行实时更新,因此它始终指向最新数据。可以使用addChangeListener(RealmModel,RealmChangeListener)注册更改侦听器,以便在发生更改时得到通知。托管对象是线程限制的,因此无法从创建它们的其他线程访问它们。
Realm对象的实例可以是托管对象,也可以是非托管对象。 托管对象在Realm中持久存在,始终是最新的并且线程受限。它们通常比非托管版本更轻量级,因为它们在Java堆上占用的空间更少。 非托管对象就像普通的Java对象一样,它们不会被持久化,也不会自动更新。它们可以在线程之间自由移动。
更多信息请参阅:https://realm.io/docs/java/4.3.3/api/io/realm/RealmObject.html