我是Realm的新手,我想知道在Application对象中只有一个Realm实例,在应用程序中需要的所有情况下使用它,并且仅在onDestroy
中关闭它是一个好习惯。申请类。
由于
答案 0 :(得分:9)
保持Realm在UI线程上打开而不关闭它本身没有任何错误(注意OnDestroy
上没有Application
)
但是你应该记住以下几点:
1)Realm可以处理被杀的过程,这意味着忘记关闭Realm对你的数据没有危险。
2)当应用程序进入后台时,不关闭Realm意味着如果资源不足,您将更有可能被系统杀死。
正如埃马努埃莱所说。领域内部使用线程本地缓存,以便不打开超出需要的领域。这意味着您不应该关注调用Realm.getInstance()
的次数,因为在大多数情况下它只是一个缓存查找。但是,总是有一个相应的close
方法也是一种好习惯。
// This is a good pattern as it will ensure that the Realm isn't closed when
// switching between activities, but will be closed when putting the app in
// the background.
public class MyActivity extends Activity {
private Realm realm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
realm = Realm.getDefaultInstance();
}
@Override
protected void onDestroy() {
realm.close();
}
}