在没有关闭它的情况下调用Realm.GetInstance(config)是否安全

时间:2016-12-14 06:54:20

标签: xamarin xamarin.android realm

我每次执行查询时都会调用 Realm realm = Realm.GetInstance(config); 。在不调用 realm.Close(); 的情况下让它在整个应用程序运行中打开是否安全?

1 个答案:

答案 0 :(得分:2)

首先,Close已过时,请使用Dispose

[Obsolete("This method has been deprecated. Instead, dispose the realm to close it.")]
public void Close()

如果您要在每个查询中创建新的Realm真的需要尽快Dispose。因为它保持读取版本/锁定你所查询的内容,消耗内存以及由于其他Realm实例写入同一个Realm文件而导致Realm文件大小膨胀的可能性。

using (var realm = Realm.GetInstance(config))
{
    // Perform a query and do something with the results
}

var realm = Realm.GetInstance(config);
// At some future point:
realm.Dispose();

现在,在您的应用的整个生命周期内重新使用 相同的 Realm实例很好,但是当您的应用关闭时,您真的应该致电Dispose (由于用户交互或操作系统将其关闭......)。

作为旁注,如果您要创建多个Realm实例,因为等待Realm在不同的线程上使用Tasks实例,您可以查看{{3 }}

  

用于在专用Realm线程上运行命令的Action / Task Message Pump。

免责声明:RealmThread是我的一个项目。