0

チャットアプリを開発して保存してcurrentTimeMilisいます。currenttimemilis でソートされた新しいエントリを取得しています。新しいエントリが listview updates に来るとき。しかし、一部の人々の currenttimemilis 値は他のものよりも大きい..したがって、新しいエントリを表示するのに問題があります

新しいエントリを取得できません...どうすればいいですか?

4

1 に答える 1

0

タイミングが異なるデバイスで収集されている場合、それらは互いに同期されていないため、デバイスごとに常に異なります。私はそれを解決するためのオプションにのみ見えます:

-メッセージがすぐに送信される場合、送信された順序で「おそらく」到着するため、メッセージの到着時間としてメッセージ時間を設定できます。「おそらく」というのは、一部のユーザーのインターネット接続が遅いため、メッセージが遅れる可能性があるためですが、ほとんどの用途では重要ではありません。

-メッセージが後で送信される場合は、タイムサーバーに接続し、そこから時間を取得してメッセージに設定する必要があります。もちろん、アプリケーションの開始時にすべてのメッセージに接続する必要はなく、デバイスとサーバーの間の時間差を取得し、その差をすべてのメッセージに適用します。

- アプリケーションで GPS を有効にする必要がある場合は、GPS から正確な時刻を取得することもできます。GPS は UTC を使用するため、タイムゾーンの修正を適用する必要があります。

--編集済み--

タイムサーバーから時差を取得する方法の詳細:

1-アプリケーションの起動時に、タイムサーバーに接続して正確な時間を取得し、その時間をデバイスの時間と比較します。後で使用するために、時差を変数に保存します。

2-Cloud API を使用してメッセージを送信するたびに、デバイスの時刻を取得し、上記の手順 1 で取得した時差を追加して、メッセージの時刻をこの値に設定します。異なる国にユーザーがいる場合は、異なるタイム ゾーンに関連する修正を適用する必要がある場合もあります。

幸運を。

于 2012-09-30T14:47:12.113 に答える