Android, 在应用中使用 Realm 单例

Android, using Realm singleton in Application

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

谢谢

在 UI 线程上保持 Realm 打开而不关闭它本身并没有错(注意 Application 上没有 OnDestroy

但是您应该记住以下几点:

1) Realm 可以很好地处理被杀死的进程,这意味着忘记关闭 Realm 不会对您的数据造成危险。

2) 当应用程序进入后台时不关闭 Realm 意味着如果资源不足,您将更有可能被系统杀死。

正如伊曼纽尔所说。 Realm 在内部使用线程本地缓存,以免打开比需要更多的 Realms。这意味着您不应该关心调用 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();
    }
}