0

Google DFP広告のPublisherInterstitialAdオブジェクトをシリアライズおよびデシリアライズして、SharedPreferencesでオブジェクトを保存および取得することは可能ですか?PublisherInterstitialAdオブジェクトのシリアライズとシリアル化解除

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.Class.isArrayで

UncaughtException java.lang.StackOverflowErrorを (Class.java:1118) をcom.google.gsonで($ Gson $ Types.java:96) com.google.gson.internal。$ Gson $ Types $ WildcardTypeImpl($ Gson $ Types.java:551) at com。 google.gson.internal。$ Gson $ Types.canonicalize($ Gson $ Types.java:109) a $ Gson $ Types $ wildcardTypeImpl($ Gson $ Types.java:544) (com.google.gson.internal)$ Gson $ Types.canonicalize($ Gson $ Types.java: $ Gson $ Types $ WildcatTypeImpl($ 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) $ Gson $ Types $ wildcardTypeImpl($ Gson $ Types.java:544) at com.google.gson.internal。$ Gson $ Types.canonicalize($ Gson $ Types.java: $ Gson $ Types $ WildcatTypeImpl($ 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)$ Gson $ Types $ WildcatTypeImpl($ Gson $ Types.java:544) com.google.gson.internal。$ Gson $ Types.canonicalize($ Gson $ Types.java) :$ Gson $ Types $ WildcardTypeImpl($ Gson $ Types.java:551) com.google.gson.internal。$ Gson $ Types.canonicalize($ Gson $ ($ 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 $ $ $ 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 $ $ com.google.gson.internalで Gson $ $ $ WildcardTypeImplタイプ($ Gson $ Types.java:551):Types.canonicalize(109 $ Gson $ Types.java)。。com.google.gson.internalで 。 $ Gson $ Types.canon com.google.gson.internalで Gson $ $ $ WildcardTypeImplタイプ($ Gson $ Types.java:544):icalize(109 $ Gson $ Types.java)。。 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 com.google.gson.internalで Gson $ $ $ WildcardTypeImplタイプ($ Gson $ Types.java:544):アル$ Gson $ Types.canonicalize(109 $ Gson $ Types.java)。。。 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

あなたが言うように、あなたがこの上で何かをしようとしている場合は、あなたのエラーの完全なスタックトレースを含め、コードを共有してください - これは支援しようとしている人々のためのより多くの参考になります。現状では、あなたの質問はあなたがデータを持っているかを見ることができNO ONEなどの意見を募集します。 – ishmaelMakitla

答えて

0

私はGoogleがあなたが広告に長期的に保存するべきではないと主張するだろうと思います。彼らは、それはそれは意図的であると信じて私をリードして彼らの広告は、直列化可能オブジェクトまたはParcelableされていないことを認識する必要があります。あなたは本当に、あなたは常にあなたのApplicationオブジェクト上のオブジェクトを格納することができなければならない場合

言われたこと、(それが落とし穴の完全な深刻なアンチパターンであるように私は本当に、しかし、これに反対をお勧めします)。私は、ちょうど例えば、あなたの目標は、活動が最初に作成されたとき、多分、間質をロードし、活動が完了した後に間質性を示すようになって、場合は、最終的に(でそれを表示する可能性があります任意の活動中の格子間を尋ねる代わりにお勧めしますあなたが活動を終える前に、ユーザは、あなたが望んだものは何でも行動にそれらを犯した後THEN)、それを示しています。

関連する問題