1人のアプリユーザーとサーバーの間でチャットメッセージを同期するためのより良いソリューションを設計する際にお役立てください。アプリケーションがオフラインになった場合、私はアプリケーションデータベースにメッセージを保存し、インターネットが利用可能なときにサーバーにプッシュする必要があります。そして、同時に誰かにメッセージを送るのであれば、私はタイムスタンプに基づいてそれらを適切に配置したいと思う。しかし、このシナリオでは、タイム・タンプが信頼できるのでしょうか?オフライン/オンラインモードでチャットメッセージを正しく同期するにはどうすればよいですか?
答えて
はいタイムスタンプは信頼性があります。ただし、保留中のキューにあるメッセージが送信されたときにタイムスタンプを更新しないようにしてください。
これを楽しみにしているのは、ブロードキャストマネージャーを作成することです。既にapp-dbを使用しているので、簡単に操作できます。
ステップ1:良い
を変更SO同じポスト <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
は、接続の変更を検出するために使用されhereを見つけることができるネットワークをリッスンするBroadCastReceiver
を作成します。
ステップ2:あなたのメッセージのためのint型のフラグを作成します。
:仮定:int型
0 - >未送信
の1->
2-送っ>など読んで.. 。
ユーザーがメッセージを送信するたびに、インターネット接続がthisを使用しているかどうかをチェックし、インターネットがあなたのアプリのローカルDBにavail storeでない場合は他のFLAG->0
あなたはFLAG-として保存サーバからポジティブコールバックを取得する場合、サーバ
への投稿>再び他の1 0
ステップ3で:今すぐあなたの放送受信機のごonRecieve
方法では、変更されたステータスが接続されているかどうかを確認してください(ネットワーク接続が確立されている場合など)。次に、フラグ - > 0 で保存されたすべてのメッセージをdbから取り出して、ステップ2で検証を再度行ってサーバーに再送信します。新しいエントリを作り直すのではなく、今度はそれらを更新してください!
それはそうです!
ありがとう、それは役に立ちました:) –
私の喜び。それを試してみて、それ以上の助けが必要な場合は教えてください。また、それがうまくいけば他の人が役に立つかもしれないように、それを答えとしてマークしてください! – MadScientist
- 1. これを正しく同期させるにはどうすればよいですか?
- 2. 別のスレッドで非同期ソケットリスナを正しく閉じるにはどうすればいいですか?
- 3. Wordpressでカスタムフィールドを同期するにはどうすればよいですか?
- 4. スレッド間の同期はどうすればよいですか?
- 5. SyncAdapterをデフォルトで同期しないように定義するにはどうすればよいですか?
- 6. Androidレイアウトビューを同期するにはどうすればよいですか?
- 7. 非同期コールバックをテストするにはどうすればよいですか?
- 8. CancellationTokenを正しくリセットするにはどうすればよいですか?
- 9. wxObjArrayを正しくインクルードするにはどうすればよいですか?
- 10. プログラムを正しくバージョンアップするにはどうすればよいですか?
- 11. アレイを正しくフォーマットするにはどうすればよいですか?
- 12. Android Studio 2.3でGradle同期エラーを修正するにはどうすればよいですか?
- 13. 同期ポストリクエストを非同期ポストリクエストに変換するにはどうすればよいですか?
- 14. 同じRunnableから別のスレッドインスタンスを正しく作成するにはどうすればよいですか?
- 15. 正しく表示するにはどうすればよいですか?
- 16. MediaPlayerの位置/期間を正しく表示するにはどうすればよいですか?
- 17. SharpMapオブジェクトのズームレベルを正しく初期化するにはどうすればよいですか?
- 18. テンプレートパラメータを正しく渡すにはどうすればよいですか?
- 19. IndexedDBを非同期で扱うにはどうすればいいですか?
- 20. ユーザーの名前とチャットメッセージでユーザーアバターを表示するにはどうすればよいですか?
- 21. PHP CLIアプリケーション(非同期+クロスプラットフォーム)からデフォルトブラウザでURLを開くにはどうすればよいですか?
- 22. ブロッキングキューインプリメンテーションの同期をテストするにはどうすればいいですか
- 23. Connectミドルウェアで非同期初期化を使用するにはどうすればよいですか?
- 24. アクションパラメータが非同期ラムダにならないようにするにはどうすればよいですか?
- 25. 更新 - 非同期要求内で同期要求を行うにはどうすればいいですか
- 26. グリッドビューを正しくデータバインドするにはどうすればいいですか?
- 27. DataGridViewを正しくレンダリングするにはどうすればいいですか?
- 28. 多くのクライアントとサーバー上のリストを同期するにはどうすればよいですか?
- 29. 2つのプロジェクトを同じソリューション内で「同期」するにはどうすればよいですか?
- 30. Rubyでシェルスクリプトを起動し、バックグラウンド(非同期)で実行するにはどうすればよいですか?
[SyncAdapter](https://developer.android.com/training/sync-adapters/creating-sync-adapter.html)を確認できます。 – hrskrs