在Realm的Java文档here中,它提到最佳做法是:
...在所有活动和碎片中打开一个Realm实例,并在活动或碎片被销毁时再次关闭它。
但是,如果我想做像
这样的事情会发生什么public class HelperListAdapter extends RealmBaseAdapter<Helper> implements ListAdapter {
//...
Realm realm = Realm.getDefaultInstance();
//...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// ...
}
}
那么在这种情况下我应该在哪里close()
领域实例?
答案 0 :(得分:2)
您链接的文档非常具体地说,为了维护生命周期,您应该在绑定到Activity生命周期的UI线程上创建Realm实例。
public class MyActivity extends Activity {
private Realm realm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
realm = Realm.getDefaultInstance();
}
@Override
protected void onDestroy() {
super.onDestroy();
realm.close();
}
}
更好 - 使用保留的片段在Activity中保存Realm实例并使用构造函数和`onDestroy()。
public class RealmFragment extends Fragment {
Realm realm;
public RealmFragment() {
setRetainInstance(true);
realm = Realm.getDefaultInstance();
}
@Override
public void onDestroy() {
super.onDestroy();
realm.close();
}
}
答案 1 :(得分:0)
Java Adapter模式是提供在两个实体之间传输数据的方法,而不是为了保存和读取它。我要求您查看an example,其中Realm实例驻留在Activity / Fragment中,而适配器用于将值传输到Views。
此外,未闭合的域实例将消耗内存和CPU周期。一旦你完成,请考虑关闭它们。