2016-10-11 5 views
0

次の実装にはアドバイスが必要です。ベスト・オブ・パーシスタンス・オブジェクト他のアクティビティからの3つのフラグメントによるアクティビティー

私は別個のセクションを持つアプリを持っています。それぞれには、多かれ少なかれ差別化された目標があります。

その1つはチャットです。このチャットはWhatsappのような3つの断片を持つアクティビティですが、はるかに簡単です。

私が活動を開始すると、私はXMPPサーバーに接続するサービスを開始し、ユーザーは、メッセージを取得し、招待状など....

私は、ユーザーとのチャットを開始すると、新しい活動を開始。 (これは重要です)

XMPPサービスが何かを受け取ったら、sendbroadcastを使ってフラグメントと更新情報を送信します。これまでのところ、活動とその3つの断片の両方が記憶に残っているので、それぞれの目的を更新することができます。

問題は次のとおりです。 ユーザーとチャットを開いて新しいアクティビティを開き、必要なオブジェクトにアクセスできなくなります。 (例えば、私のサービスが友情の要求を受け取った場合のユーザーリスト、オブジェクトがないため追加できません)

どうすればいいですか?明らかに、私はparceablesを行う必要があり、開始するには、オブジェクト上の意思による

の1-パス:

は、私の知る限りでは3つのオプションを知っています。チャットアクティビティを終了すると、更新されたオブジェクトが返されます。

2-

、3-以降(私が読んで、記憶喪失には多くの問題)私のシングルトンオブジェクトを作成し、私は、メッセージの履歴を保存するためのSQLiteを作成する必要があります。これらのオブジェクトを一時的に保持するためにこのデータベースを使用できますか?

あなたには選択肢がありますか?別のお勧めですか?

答えて

1

両方のオプション2 & 3を使用して問題を解決することができます。 オプション2はより簡単で、実装の第一歩になります。 しかし、将来SQLを使用する予定がある場合は、オプション3を選択するのが適切な選択肢のようです。これは、データ格納部&の実際のUIからの取り出しを切り離すのに役立ちます。 DBが一時的なデータを保持できるかどうかについては、(例えば、アプリケーションを起動して古いデータを持っているときなど)関連するテーブルをもう不要にしても間違いなく削除することができます。

参考にしてください。あなたが見るのは、CursorLoadersです。

+0

返信いただきありがとうございます。私がもう少し静かに滞在しているという事実は、活動の間に永続的な目的がないという魔法のことがあると思ったからです。 私はまだシングルトンがあまり好きではありませんが、私は迅速なデプロイメントのためのテストを行い、SQLiteに渡します。 についてCursorLoaderについて、情報ありがとうございます。彼を知らなかった。私が誤解していない場合、少し読んでいます: CursorLoaderを使用すると、現在のアクティビティのバックグラウンドから別のアクティビティにあるリストを更新できますか?そうですか? – daicon

+0

CursorLoaderをContentProviderと結合すると、複数のアクティビティ(またはアプリの他の部分)間でデータを更新できます。私はこの答えがあなたを助けることができると思う - http://stackoverflow.com/questions/15517920/how-do-cursorloader-automatically-updates-the-view-even-if-the-app-is-inactive –

+0

ありがとうとても。私はContentProviderが外部アプリケーションと情報を共有するためにのみ使用されることを理解しました。それでは?それは決して1つを使用しませんでしたが、それは私が理解するものです。 – daicon

関連する問題