gpt4 book ai didi

android - 如果我在不关闭开放 Realm 实例的情况下关闭我的 Android 应用程序会怎样?

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:49 25 4
gpt4 key购买 nike

我在 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 core已经用c++编程语言编写,并在本地代码中编译。我们知道c++垃圾回收不会自动运行,我们需要手动调用垃圾回收。所以当您调用 realm.close() 时,这意味着 Realm 释放 native 内存意味着释放或删除指针变量并执行文件描述符作业。来自 realm.close() 表示您向 native c++ 编译器发出命令或告诉其运行垃圾回收。

关于android - 如果我在不关闭开放 Realm 实例的情况下关闭我的 Android 应用程序会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49587661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com