0

Возможно ли сериализовать и де-сериализовать объект PublisherInterstitialAd объявлений Google DFP, чтобы сохранить и получить объект в SharedPreferences?Сериализация и де-сериализация объекта PublisherInterstitialAd

Когда я попытался использовать библиотеку Gson, я получил StackOverflowError. Пожалуйста, подскажите, как это можно сделать, и где я буду ошибаться в своем нынешнем подходе.

спасибо.

Это методы, используемые для сохранения и извлечения объекта Ad в SharedPreferences, где publisherInterstitialAd является объектом, о котором идет речь.

public void saveInterstitialAd(PublisherInterstitialAd publisherInterstitialAd) { 
    Gson gson = new Gson(); 
    String json = gson.toJson(publisherInterstitialAd); 
    mEditor.putString("InterstitialAd", json); 
    mEditor.commit(); 
} 

public PublisherInterstitialAd getInterstitialAd(){ 
    Gson gson = new Gson(); 
    String json = mSharedPrefs.getString("InterstitialAd", ""); 
    if(json.equals("")) 
     return null; 
    return gson.fromJson(json, PublisherInterstitialAd.class); 
} 

и это трассировка стека подвожу:

UncaughtException java.lang.StackOverflowError в java.lang.Class.isArray (Class.java:1118) в com.google.gson . $ Gson $ Types.canonicalize ($ Gson $ Types.java: 96) at com.google.gson.internal. $ Gson $ Типы $ WildcardTypeImpl. ($ Gson $ Types.java: 551) at com. google.gson.internal. $ Gson $ Types.canonicalize ($ Gson $ Types.java: 109) a ($ Gson $ Types.java: 544) at com.google.gson.internal. $ Gson $ Types.canonicalize ($ Gson $ Types.java: $ gson $ Types.java: $ Gson $ Типы.java: 109) at com.google.gson.internal. $ Gson $ Types $ WildcardTypeImpl. ($ Gson $ Types.java: 551) at com.google.gson.internal. $ Gson $ Types.canonicalize ($ Gson $ Types .java: 109) at com.google.gson.internal. $ Gson $ Типы $ WildcardTypeImpl. ($ Gson $ Types.java: 544) at com.google.gson.internal. $ Gson $ Types.canonicalize ($ Gson $ Types.java: 109) at com.google.gson.internal. $ Gson $ Types $ WildcardTypeImpl. ($ Gson $ Types.java: 551) at com.google.gson.internal. $ Gson $ Types. canonicalize ($ Gson $ Types.java: 109) в com.google.gson.internal. $ Gson $ Types $ WildcardTypeImpl. ($ Gson $ Types.java: 544) at com.google.gson.internal. $ Gson $ Types.canonicalize ($ Gson $ Types.java: 109) at com.google.gson.internal. $ Gson $ Types $ WildcardTypeImpl. ($ Gson $ Types.java: 551) at com.google.gson.internal. $ Gson $ Types.canonicalize ($ Gson $ Types .java: 109) at com.google.gson.internal. $ Gson $ Типы $ WildcardTypeImpl. ($ Gson $ Types.java: 544) at com.google.gson.internal. $ Gson $ Types.canonicalize ($ Gson $ Types.java: 109) at com.google.gson.internal. $ Gson $ Types $ WildcardTypeImpl. ($ Gson $ Types.java: 551) at com.google.gson.internal. $ Gson $ Types. canonicalize ($ Gson $ Types.java: 109) at com.google.gson.internal. $ Gson $ Types $ WildcardTypeImpl. ($ Gson $ Types.java: 544) at com.google.gson.internal. $ Gson $ Types.canonicalize ($ Gson $ Types.java : 109) at com.google.gson.internal. $ Gson $ Типы $ WildcardTypeImpl. ($ Gson $ Types.java: 551) at com.google.gson.internal. $ Gson $ Types.canonicalize ($ Gson $ Type.java:109) at com.google.gson.internal. $ Gson $ Типы $ WildcardTypeImpl. ($ Gson $ Types.java: 544) at com.google.gson.internal. $ Gson $ Types.canonicalize ($ Gson $ Types.java: 109) at com.google.gson.internal. $ Gson $ Типы $ WildcardTypeImpl. ($ Gson $ Types.java: 551) at com.google.gson.internal. $ Gson $ Типы .canonicalize (типы $ Gson $.Java:.. 109) в com.google.gson.internal Gson Типы $ $ $ WildcardTypeImpl ($ Gson $ Types.java: 544) в com.google.gson.internal $ Gson $ Types.canonicalize ($ Gson. $ Types.java: 109) в com.google.gson.internal Gson Типы $ $ $ WildcardTypeImpl ($ Gson $ Types.java:.. 551) в com.google.gson.internal $ Gson $ Types.canonicalize. ($ Gson $ Types.java: 109).. в com.google.gson.internal Типы Gson $ $ $ WildcardTypeImpl ($ Gson $ Types.java: 544). на com.google.gson.internal Gson $ $ Types.canonicalize ($ Gson $ Types.java: 109) в com.google.gson.internal Gson $ $ $ WildcardTypeImpl Типы ($ Gson $ Types.java: 551).. в com.google.gson.internal. $ Gson $ Types.canon icalize ($ Gson $ Types.java: 109) в com.google.gson.internal Gson Типы $ $ $ WildcardTypeImpl ($ Gson $ Types.java: 544).. в com.google.gson.internal $ Gson. $ Types.canonicalize ($ Gson $ Types.java: 109).. в com.google.gson.internal Gson Типы $ $ $ WildcardTypeImpl ($ Gson $ Types.java: 551) в com.google.gson.internal . $ Gson $ Types.canonicalize ($ Gson $ Types.java: 109).. в com.google.gson.internal Gson $ $ $ WildcardTypeImpl Типы ($ Gson $ Types.java: 544) на com.google. . gson.internal $ Gson $ Types.canonicalize ($ Gson $ Types.java: 109) в com.google.gson.internal Gson $ $ $ WildcardTypeImpl Типы ($ Gson $ Types.java: 551).. в ком .google.gson.intern . Аль $ Gson $ Types.canonicalize ($ Gson $ Types.java: 109).. в com.google.gson.internal Gson Типы $ $ $ WildcardTypeImpl ($ Gson $ Types.java: 544) в com.google .gson.internal $ Gson $ Types.canonicalize ($ Gson $ Types.java: 109)... в com.google.gson.internal Gson Типы $ $ $ WildcardTypeImpl ($ Gson $ Types.java: 551) в . com.google.gson.internal $ Gson $ Types.canonicalize ($ Gson $ Types.java: 109).. в com.google.gson.internal Типы Gson $ $ $ WildcardTypeImpl ($ Gson $ Types.java: 544) на com.google.gson.internal. $ Gson $ Types.canonical

+0

Если вы пытались что-то по этому поводу, как вы говорите, пожалуйста, поделитесь кодом, в том числе полного StackTrace вашей ошибки - это будет более полезной для людей, которые пытаются помочь. Как он стоит, ваш вопрос будет домогается только мнения, как никто не может увидеть, что у вас есть данные. – ishmaelMakitla

ответ

0

Я думаю, что Google будет утверждать, что вы не должны хранить объявления в долгосрочной перспективе. Они должны знать, что их объявления не сериализуемые объекты или Parcelable, так что заставляет меня верить, что это Преднамеренное.

что уже было сказано, если Вы действительно должны, вы всегда можете хранить объекты на вашем объекте Application (я действительно рекомендую против этого, хотя, как это серьезный антишаблон полного ловушек). Я бы рекомендовал вместо этого просто просить для интерстициального в какой-либо деятельности, что вы можете в конечном итоге показать его (если, например, ваша цель состоит в том, чтобы показать интерстициальные после завершения деятельности, может загрузить интерстициальную Когда активность первым Создана, ТОГДА показать его, прежде чем закончить свою деятельность, после того, как пользователь их совершил любые действия, которые вы хотели).

Смежные вопросы