如果在没有关闭开放领域实例的情况下关闭我的Android应用程序会发生什么?

我在Application类的主线程上保留了一个单独的realm实例,我使用该单个实例从MainActivity执行各种DB操作.由于我的应用程序只有一个活动,因此我在活动的onDestroy()中关闭实例.截至目前,该应用程序对我来说工作正常.

不做realm.close()有什么影响?我的数据库没有损坏或不相同.

此外,我已经读过,有些情况下Activity的onDestroy()根本不会被调用.如果关闭领域如此重要,数据库可以在这种情况下产生什么影响?

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;
    }
}

主要活动

public class MainActivity extends Activity {

    @Override
    protected void onDestroy() {
        MyApp.getInstance().getRealm().close();
        super.onDestroy();
    }

}

解决方法:

关闭领域实例是非常重要的,因为领域核心已经用c编程语言编写并在本机代码中编译.我们知道c垃圾收集不会自动运行我们需要手动调用垃圾收集.所以当你调用时realm.close()意味着realm释放本机内存意味着*或删除指针变量并且还执行文件描述符job.From realm.close()意味着你给命令或告诉本机c编译器运行垃圾采集.

上一篇:c# – realm.xamarin抛出错误:不支持方法’Contains’. ‘任意’相同


下一篇:java – Realm:迭代RealmObject并清除ArrayList字段