领域阻止Gson库

时间:2015-03-09 16:09:05

标签: android database parsing gson realm

我的Realm库存在问题。我在我的应用程序中实现了它,包括库。开始创建一些realmObjects,以便与我的应用程序一起使用,然后我尝试启动应用程序,但令我惊讶的是,它卡在第一页上,这很奇怪,因为没有Realm代码。 经过一些调试后,我发现它崩溃在以下一行:

 String json = gson.toJson(user);

Gson不是null。我也尝试并取出了领域,看看是否是问题,没有它就可以了。 这就是崩溃论者在几分钟之后告诉我的事情(它没有直接崩溃,只是暂时停止了一段时间,之后):

Fatal Exception: java.lang.OutOfMemoryError
OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stack available  
java.lang.Object.wait (Object.java)
java.lang.Thread.run (Thread.java:818)  
dalvik.system.VMRuntime.concurrentGC (VMRuntime.java)
java.lang.Thread.run (Thread.java:818)
java.lang.Object.wait (Object.java)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
com.crashlytics.android.internal.am.a (SourceFile:44)
com.crashlytics.android.internal.aa.run (SourceFile:13)
java.lang.Thread.run (Thread.java:818)
java.lang.Object.wait (Object.java)
java.util.concurrent.FutureTask.get (FutureTask.java:162)
com.crashlytics.android.v.a (SourceFile:1936)
com.crashlytics.android.v.uncaughtException (SourceFile:307)
java.lang.ThreadGroup.uncaughtException (ThreadGroup.java:693)
java.lang.ThreadGroup.uncaughtException (ThreadGroup.java:690)

编辑:我传递给gson(用户)的Item是一个名为UserRecord的类的实例,它扩展了RealmObject。 可能是因为它是一个realmObject而不是一个标准的android对象吗?

1 个答案:

答案 0 :(得分:1)

我发现了问题:问题在于我正在使用:

Gson gson = new Gson();

而不是我应该使用的东西:

Gson gson = new GsonBuilder()
    .setExclusionStrategies(new ExclusionStrategy() {
        @Override
        public boolean shouldSkipField(FieldAttributes f) {
            return f.getDeclaringClass().equals(RealmObject.class);
        }

        @Override
        public boolean shouldSkipClass(Class<?> clazz) {
            return false;
        }
    })
    .create();