1

私には2つのテーブルがSyncedCommentsありQueuedComments、後者はWebサーバーと同期されるまでローカルコメントを保持します。同期が成功すると、同期されたテーブルに配置されます。アプリケーションは各タイプに依存しないはずです。CursorLoaderを介してコメントをロードすると、ユーザーがコメントを読んでいる間に、同期されたテーブルに移動される可能性があります。たとえば、ユーザーがコメントを移動しているときに編集することもできるため、アプリケーションは、テーブルに関係なく、コメントの場所を認識している必要があります。

これをサポートするために、local_id、synced_id、queued_idの3つの列を持つテーブルを作成することを考えました。local_idは永続的であり、他の2つのIDのいずれかへの参照として機能します。コメントが作成されると、sync_idがNULLに設定され、キューIDが指定された新しい行が挿入されます。コメントが移動されると、queue_idがNULLに設定され、sync_idが設定されます。このように、私のアプリケーションは常にローカルIDを参照するだけで済みます。

このソリューションはどのように見えますか?何か欠陥はありますか?もっと賢くできますか?

4

1 に答える 1

1

そもそも、コメントが同期されているかどうかのフラグを付けて、すべてのコメントを1つのテーブルに配置します(実際には、サーバー上のIDであり、同期されるまでNULLに設定され、その後サーバーから値が取得されます)。これにより、3つではなく1つのテーブルになり、すべてのコメントを表示しやすくなり(結合を行う必要がないため)、何よりも、表示中にコメントが同期されるときに問題が発生しないようになります。これは、コメントが表示されないためです。どこにでも移動します。また、データベースファイルへの書き込みが少なくなるため、断片化が少なくなり、フラッシュデバイスへの書き込みが少なくなります。

于 2012-11-26T08:34:51.683 に答える