Android,在Application中使用Realm singleton

时间:2015-08-04 03:10:38

标签: android realm

我是Realm的新手,我想知道在Application对象中只有一个Realm实例,在应用程序中需要的所有情况下使用它,并且仅在onDestroy中关闭它是一个好习惯。申请类。

由于

1 个答案:

答案 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();
    }
}