我在 Application
类的主线程上保留了一个单一 Realm 实例,我使用该单一实例从 MainActivity
执行各种数据库操作。由于我的应用程序只有一个 Activity ,因此我关闭了 Activity 的 onDestroy()
中的实例。到目前为止,该应用程序对我来说运行良好。
不做 realm.close()
的后果是什么?无论是否相同,我的数据库都没有损坏。
另外,我读到在某些情况下可能根本不会调用 Activity 的 onDestroy()
。如果关闭 Realm 如此重要,数据库在这种情况下会产生什么影响?
public class MyApp extends Application {
private static MyApp instance;
private Realm realm;
public void onCreate() {
super.onCreate();
Realm.init(this);
Realm.setDefaultConfiguration(new RealmConfiguration.Builder()
.schemaVersion(BuildConfig.VERSION_CODE)
.migration(new RealmMigrationClass())
.compactOnLaunch()
.build());
realm = Realm.getInstance(Realm.getDefaultConfiguration());
}
public static MyApp getInstance() {
return instance;
}
public Realm getRealm() {
return realm;
}
}
主要 Activity
public class MainActivity extends Activity {
@Override
protected void onDestroy() {
MyApp.getInstance().getRealm().close();
super.onDestroy();
}
}
最佳答案
关闭realm实例非常重要,因为realm核心是用c++编程语言编写的,是用原生代码编译的。而且我们知道c++垃圾收集不会自动运行,我们需要手动调用垃圾收集。所以当你调用 realm.close() 表示域释放 native 内存意味着释放或删除指针变量并执行文件描述符工作。从 realm.close() 表示您向 native C++ 编译器提供命令或告诉运行垃圾收集。
关于android - 如果我在不关闭开放 Realm 实例的情况下关闭我的 android 应用程序会发生什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49587661/