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();
}
}
我是 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();
}
}