android - 无法压缩域。 Realm.getInstance 使我的应用程序在 LG G5 上崩溃

标签 android database file realm

我在尝试运行以下 REALM 代码时遇到此错误。为什么会这样?

代码:

  public static void deleteRealm(Context context) {
    Realm realm = Realm.getInstance(PSApplicationClass.Config);
    try {
        Log.i("", "realm start");
        realm.executeTransaction(new Realm.Transaction() {
            @Override
            public void execute(Realm realm) {
                realm.delete(Destination.class);
                realm.delete(TripStep.class);
                realm.delete(TripStop.class);
                realm.delete(Route.class);
                realm.delete(RealmLocation.class);
                realm.delete(PSTrip.class);
                realm.delete(PSUser.class);
                realm.delete(UserVehicle.class);
                realm.delete(Vehicle.class);
                realm.delete(MileageRates.class);
                realm.delete(PSUserActivityMonth.class);
                realm.delete(PSUserActivityWeek.class);
                realm.delete(PSUserActivityYear.class);
                realm.delete(Activity.class);
                realm.delete(PSTripsStats.class);
            }
        });
        realm.close();
        RealmManager.closeInstance();
        try {
            boolean compact = Realm.compactRealm(PSApplicationClass.Config);
            Log.i("", "GLOBAL realm end: " + compact);
        }catch (Exception e){
            Utils.appendLog("Error trying to compact realm","E", Constants.OTHER);
        }
    } catch (Exception e) {
        Log.i("", "realm continue initTrip error trying to add to realm:" + e.getMessage());
        if (realm.isInTransaction()) {
            realm.cancelTransaction();
        }
    }
}

错误:

01-02 11:12:40.352: E/AndroidRuntime(18999): Process: nl.hgrams.passenger, PID: 18999
01-02 11:12:40.352: E/AndroidRuntime(18999): io.realm.exceptions.RealmFileException: Unable to open a realm at path '/data/data/nl.hgrams.passenger/files/myrealm.realm.management': make_dir() failed: No such file or directory. (make_dir() failed: No such file or directory) (/data/data/nl.hgrams.passenger/files/myrealm.realm.management) in /home/cc/repo/realm/release/realm/realm-library/src/main/cpp/io_realm_internal_SharedRealm.cpp line 217 Kind: ACCESS_ERROR.
01-02 11:12:40.352: E/AndroidRuntime(18999):    at io.realm.internal.SharedRealm.nativeGetSharedRealm(Native Method)
01-02 11:12:40.352: E/AndroidRuntime(18999):    at io.realm.internal.SharedRealm.<init>(SharedRealm.java:192)
01-02 11:12:40.352: E/AndroidRuntime(18999):    at io.realm.internal.SharedRealm.getInstance(SharedRealm.java:240)
01-02 11:12:40.352: E/AndroidRuntime(18999):    at io.realm.internal.SharedRealm.getInstance(SharedRealm.java:208)
01-02 11:12:40.352: E/AndroidRuntime(18999):    at io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:297)
01-02 11:12:40.352: E/AndroidRuntime(18999):    at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:283)
01-02 11:12:40.352: E/AndroidRuntime(18999):    at io.realm.Realm.getInstance(Realm.java:291)

这发生在 Realm realm = Realm.getInstance(PSApplicationClass.Config);

这不会发生在 Le Eco Le 2 Pro 或 Nexus 5 上,但会发生在我的 LG G5 上。我压实的方式有问题吗? (这里还没有达到紧凑的代码,所以我不明白这怎么可能。

最佳答案

经过多次测试和反复试验,我发现了问题所在。注销时,我正在删除数据目录的上下文。所以对于 API > N 的手机会崩溃:

   int currentapiVersion = android.os.Build.VERSION.SDK_INT;
    if (currentapiVersion >= android.os.Build.VERSION_CODES.N) {
        FileUtils.deleteQuietly(context.getDataDir());
    }

关于android - 无法压缩域。 Realm.getInstance 使我的应用程序在 LG G5 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48059074/

相关文章:

python - 无法将 DateTimeField 的默认值设置为 "0000-00-00 00:00:00"

flutter - FilePicker 小部件在发布 mod 上没有响应

android - 单个单选组中水平和垂直方向的单选按钮

java - Android 套接字连接问题

java - 如何在 Android 单元测试中调用测试监听器接口(interface)

C++/C : Move Directory to Another Location

c - 列出根目录下的内容【C编程】

android - 在 Android 中不转到上一个屏幕?

android - 获取数据和传递给另一个 Activity 的最佳方式是什么?

php - 错误 : Object of class CI_DB_mysql_result could not be converted to string