2015-03-09 6 views
1

У меня проблема с библиотекой Realm. Я реализовал его в своем приложении, включил библиотеку. Начал создавать некоторые объекты realmObjects, чтобы использовать их с моим приложением, а затем я попытался запустить приложение, но, к моему удивлению, он застрял на первой странице, что странно, потому что код Realm не был там. После некоторых отладки я обнаружил, что он разбился на следующей строке:Блоки Realm библиотеки Gson

String json = gson.toJson(user); 

Gson не является нулевым. Кроме того, я попробовал и вынул сферу, чтобы убедиться, что это проблема, и она работает без нее. Это то, что crashlytics говорит мне, через пару минут (не падает прямо, просто сидит во время блокировки, и после этого):

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) 

EDIT: Пункт, что я перехожу к gson (пользователь) является экземпляром класса UserRecord, который расширяет RealmObject. Может ли это быть, потому что это объект realmObject, а не стандартный Android-объект?

+0

Вы сделали профиль памяти? – Submersed

+0

Объект пользователя содержит большие капли данных? –

+0

его 6 строк, например, имя пользователя, имя, фамилия, адрес электронной почты и т. Д., В основном объект User. Не сделал профиль памяти. Но, похоже, для gson кажется, что он пытается освободить место примерно на 2-3 минуты, пока он не сработает из OOM с json меньше, чем твиттер –

ответ

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(); 
Смежные вопросы