チャットアプリを開発して保存してcurrentTimeMilis
います。currenttimemilis でソートされた新しいエントリを取得しています。新しいエントリが listview updates に来るとき。しかし、一部の人々の currenttimemilis 値は他のものよりも大きい..したがって、新しいエントリを表示するのに問題があります
新しいエントリを取得できません...どうすればいいですか?
タイミングが異なるデバイスで収集されている場合、それらは互いに同期されていないため、デバイスごとに常に異なります。私はそれを解決するためのオプションにのみ見えます:
-メッセージがすぐに送信される場合、送信された順序で「おそらく」到着するため、メッセージの到着時間としてメッセージ時間を設定できます。「おそらく」というのは、一部のユーザーのインターネット接続が遅いため、メッセージが遅れる可能性があるためですが、ほとんどの用途では重要ではありません。
-メッセージが後で送信される場合は、タイムサーバーに接続し、そこから時間を取得してメッセージに設定する必要があります。もちろん、アプリケーションの開始時にすべてのメッセージに接続する必要はなく、デバイスとサーバーの間の時間差を取得し、その差をすべてのメッセージに適用します。
- アプリケーションで GPS を有効にする必要がある場合は、GPS から正確な時刻を取得することもできます。GPS は UTC を使用するため、タイムゾーンの修正を適用する必要があります。
--編集済み--
タイムサーバーから時差を取得する方法の詳細:
1-アプリケーションの起動時に、タイムサーバーに接続して正確な時間を取得し、その時間をデバイスの時間と比較します。後で使用するために、時差を変数に保存します。
2-Cloud API を使用してメッセージを送信するたびに、デバイスの時刻を取得し、上記の手順 1 で取得した時差を追加して、メッセージの時刻をこの値に設定します。異なる国にユーザーがいる場合は、異なるタイム ゾーンに関連する修正を適用する必要がある場合もあります。
幸運を。