2017-02-11 8 views
0

私は今までパーセル化して使っていたカスタムクラスを持っています。私はそのクラスを余分なものとしてインテントに入れ、アラームマネージャを使ってonReceiveクラスに戻るべき時を設定することができました。これはAPIレベル23で機能しました。android api level 24+上のカスタムパーセル化可能オブジェクトをAlarmManagerレシーバに共有するには?

Android 7.0(APIレベル24)を搭載した電話でコードを実行しようとしましたが、インテントのエクストラはnullになります。私はこれがアンドロイドAPIレベル24+ではもはや不可能であり、生の型とは別に、カスタムのパーセルブルなクラスは余分に追加できないことを読んでいます。私の質問は、これらの問題をどうやって解決するかです。パーセルクラスから移転されるたくさんのプロパティを必要とし、異なるタイプのデータを1つずつ追加することは私には不合理なようです。

答えて

1

私は、これはAndroidのAPIレベル24+ではもはや不可能であることを読んで、それは別として、生タイプから何のカスタムparcelableクラスは、余分な

Correctとして追加することはできません。他のプロセスがそれを読み込もうとしたときに、あなたのParcelableクラスがなく、クラッシュしたように、プロセス外にカスタムParcelableを渡すのは危険です。

私の質問はどうしたらこれらの問題を回避できますか?

一つの解決策は、余分にbyte[]を入れて、あなたのParcelablebyte[]に自分自身を変換することです。次に、取得したプロセスを元に戻します。他のプロセスではカスタムクラスは必要ありません。 This Stack Overflow answerは技術を概説する。 this sample appがそれを示しています。

+0

リンクをありがとう、私は今それを試みる! – Nick

+0

何らかの理由で最初のリンクの答えがうまくいかなかった(おそらく私の間違った実装)が、実際には2番目のリンクが私を助けてくれました。ありがとう! – Nick

関連する問題