【发布时间】:2015-01-05 10:48:59
【问题描述】:
我试图避免在我的 android 应用程序中为每个片段创建和管理 Realm 对象。我认为 ThreadLocalVariable 可能是一个好的开始。
public class RealmInstanceGenerator extends ThreadLocal<Realm> {
public Realm getRealmForMyThread(Context context) {
if(get() == null && context != null)
super.set(Realm.getInstance(context));
return get();
}
public void setRealmForCurrentThread(Context context) {
if(context != null)
super.set(Realm.getInstance(context));
}
@Override
protected Realm initialValue() {
return null;
}
@Override
public void remove() {
if(get() != null) get().close();
super.remove();
}
}
我会在我的 utils 单例类中创建一个 RealmInstanceGenerator 的静态最终对象,并在我的 MainActivity 中调用 setRealmForCurrentThread。然后我会在我的活动结束时调用 remove 。对于任何新线程,都会自动生成一个新的 Realm 对象。 这是一个好策略吗?
【问题讨论】:
标签: android thread-local realm