Q1:请让我知道以下两种方式implementation
之间有什么不同(约获得realm instance
)。我想知道哪一个更快,内存更轻,建议什么?深入了解Realm的工作原理?
1.设置和获取境界为默认值(具体配置)从配置直接
public Realm getCustomRealm(Context context) {
if (!Utils.isStringHasText(databaseName)) {
databaseName = DbManager.getInstance().getCurrentDb();
}
// get config
RealmConfiguration config = getRealmConfigByDBName(context, databaseName);
Realm.compactRealm(config);
return Realm.getInstance(config);
}
Q2
private void setupCustomRealm() {
if (!Utils.isStringHasText(databaseName)) {
databaseName = DbManager.getInstance().getCurrentDb();
}
// get config
RealmConfiguration config = getRealmConfigByDBName(databaseName);
Realm.setDefaultConfiguration(config);
Realm.compactRealm(config);
}
public Realm getCustomRealm() {
if (firstTime) {
setupCustomRealm();
}
return Realm.getDefaultInstance();
}
2。获得境界:在我的应用程序,现在我们考虑两种实施方式。
1:我们每次需要对数据库(在工作线程和UI线程中)都做一些事情时创建一个新的Realm实例,并在任务完成时关闭它。
2:我们只创建一个Realm实例并让它与应用程序一起生存,退出应用程序时我们关闭上面的实例。
(使用服务来处理数据库和网络连接我的应用程序),请解释一下我的优势和每一个和方式的缺点,建议
如果我有2个繁重的任务(需要很长的时间来完成它的交易),在一个Realm实例中执行2个任务和在2个独立的线程中执行2个Realm实例之间的区别(我的意思是一个线程有一个Realm实例,实例将执行上面两个任务中的一个),以及哪一个更安全并且更快。
如果在执行交易(例如无响应或抛出一些例外)
当我用午餐(回复钩评论) – EpicPandaForce
大做,我会回答这个问题!我在等你的答案! –
我还链接SO境界文档,因为他们整齐,我保留了一些它的最新和东西:http://stackoverflow.com/documentation/android/3187/realm#t=201608011053013386746 – EpicPandaForce