尝试运行以下领域代码时出现此错误。为什么会这样?
代码:

  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);
这不是发生在乐生态乐2专业,或Nexus5,但它确实发生在我的LG G5。我的压缩方式有问题吗?(这里还没有找到压缩代码,所以我不知道这怎么可能。

最佳答案

经过更多的测试和反复试验,我发现了这个问题。注销时,我正在删除数据目录的上下文。因此,对于api>n的手机会崩溃:

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

10-07 19:28
查看更多