在Realm项目中使用LeakCanary

时间:2018-01-30 10:53:12

标签: android realm leakcanary

我有一个使用Realm的android项目。 我正在尝试集成LeakCanary以查找内存泄漏,但是当LeakCanary尝试创建报告时,它会因异常而崩溃

encrypted.realm: Encrypted interprocess sharing is currently unsupported

据我所知,LeakCanary尝试从不同进程访问Realm,导致崩溃。

如何解决这个问题?是否有人在项目中使用Realm和LeakCanary?

1 个答案:

答案 0 :(得分:0)

正如我在本主题https://github.com/realm/realm-java/issues/3053中发现的那样,您可以通过这种方式跳过LeakCanary进程的Realm初始化

 if (!LeakCanary.isInAnalyzerProcess(this)) {
            byte[] key = new byte[64];
            Arrays.fill(key, (byte) 0);

            config = new RealmConfiguration.Builder(this).encryptionKey(key).build();
            realm = DynamicRealm.getInstance(config);
        }

或者,如果您仍然需要Realm,则可以创建哑区域配置

Realm.init(context);

if (LeakCanary.isInAnalyzerProcess(context)) {
    return new RealmConfiguration.Builder().build();
}