【发布时间】:2016-10-14 18:30:52
【问题描述】:
是否可以对 Google DFP 广告的 PublisherInterstitialAd 对象进行序列化和反序列化,以便在 SharedPreferences 中保存和检索该对象?
当我尝试使用 Gson 库时,我得到了 StackOverflowError。请建议如何最好地做到这一点,以及在我目前的方法中我会出错的地方。
谢谢。
这些是用于在 SharedPreferences 中保存和检索 Ad 对象的方法,其中 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);
}
这是我得到的堆栈跟踪:
未捕获异常 java.lang.StackOverflowError 在 java.lang.Class.isArray(Class.java:1118) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:96) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:551) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:544) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:551) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:544) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:551) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:544) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:551) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:544) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:551) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:544) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:551) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:544) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:551) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:544) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:551) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:544) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:551) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:544) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:551) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:544) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:551) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:544) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:551) 在 com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:109) 在 com.google.gson.internal.$Gson$Types$WildcardTypeImpl.($Gson$Types.java:544) 在 com.google.gson.internal.$Gson$Types.canonical
【问题讨论】:
-
如果您按照您的说法尝试过此操作,请分享代码,包括您的错误的完整堆栈跟踪 - 这对试图提供帮助的人会更有帮助。就目前而言,您的问题只会征求意见,因为没有人可以看到您所做的事情。
标签: serialization sharedpreferences deserialization google-dfp android gson