現在、私はAndroidアプリケーションアーキテクチャで作業していますが、Github Repoサンプルの1つのことを理解できません。レートリミッタやヌルチェックを使用して新しいデータを取得することもできますが、この場合はデータベースに新しい値を挿入するだけで、データベースから古い値を削除することはありません。たとえば、データベース内の古い結果の1つがサーバーから削除された場合(ユーザーが削除したrepo)それはまだデータベースにありますか?どのようにしてこの値を排除できますか?何か不足しているのですか?これは未処理のケースですか?Androidアーキテクチャーコンポーネント - 古いデータをルームから削除する
0
A
答えて
0
私は解決策が付いてきました。
これは、エンティティ、
@Entity
data class User(
@PrimaryKey val uid : Int,
val name : String,
val createdTime : Long = System.currentTimeMillis()
)
以下は、例えば、JSONはhttps://jsonplaceholder.typicode.com から採取し、再フォーマットした例です。あなたはkotlinのデータクラスに簡単にJSON形式のデータをデシリアライズすることができhttps://github.com/FasterXML/jackson-module-kotlinを使用して
private val userJson = "[{\"uid\": 1,\"name\": \"Leanne Graham\"},{\"uid\": 2,\"name\": \" Graham\"},{\"uid\": 3,\"name\": \"Y Graham\"},{\"uid\": 4,\"name\": \"Lea\"}]"
。 gsonライブラリとは異なり、jaksonはデフォルト値をサポートしているので、作成された時間を現在のミリ秒単位で設定できます。以下はUserDao
@Dao
interface UserDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertUser(user : User)
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertUsers(user : List<User>)
@Query("SELECT * FROM user")
fun getUsers() : List<User>
@Delete()
fun deleteOldUsers(users : List<User>)
です。getUser()メソッドを使用してすべてのユーザーを取得し、古いものや新鮮なものとしてフィルタリングすることができます。データベースより古いものを削除する必要があります。また、freshUsersが空でない場合はそれを使用し、空の場合は新しいネットワーク要求を作成します。
val expireTime = TimeUnit.HOURS.toMillis(1)
val userList = App.database.userDao().getUsers()
val freshUsers = userList.filter { it.createdTime > System.currentTimeMillis() - expireTime}
val oldUsers = userList.filter { it.createdTime < System.currentTimeMillis() - expireTime}
App.database.userDao().deleteOldUsers(oldUsers)
この解決策は私のために働いています。しかし、私もあなたのソリューションを聞いてうれしいです。
関連する問題
- 1. 古いデータを弾性検索から削除または削除する
- 2. SQLite古いデータを削除する
- 3. Socket.IO:特定のsocket_idをルームから削除しますか?
- 4. Android:データベースからデータを削除
- 5. Redis:古い未使用データの削除
- 6. Androidをリストビューから削除してから削除する
- 7. SQLite古いテーブルにある新しいテーブルのデータから削除
- 8. Mongodbは古いデータをバックアップし、定期的にデータベースから削除します。
- 9. TXTファイルから古いログエントリを削除するBATファイル
- 10. 古いパッケージをリポジトリから削除するには?
- 11. 辞書から一番古い項目を削除する
- 12. Lotus Notesデータベースから古いメールを削除する
- 13. 最後の日から古いファイルを削除するgsutilコマンド
- 14. 古いmysqlユーザーをデータベースから削除する方法
- 15. 手順上の迷路から古いコライダーを削除する
- 16. svnサーバから古いリビジョンを削除する
- 17. X日より古いフォルダからファイルを削除する
- 18. n秒より古いファイルからテキストを削除する
- 19. admin uiから古いエンドポイントプロファイルを削除する
- 20. 古いコミットから単一のファイルを削除する
- 21. MSysObjectsから古いアクセス成果物を削除する
- 22. コアデータから古いレコードを削除する
- 23. ピボットテーブル。スライサーから古い値を削除する
- 24. ディレクトリ内のサブディレクトリから最も古いファイルを削除する
- 25. git:古いコミットからファイルを削除する
- 26. 新しいデータを削除せずに古いデータベースから新しいデータベースにデータを挿入する
- 27. Googleフォームで古いデータ行を削除する
- 28. mongodb古いチャットを削除
- 29. KMLファイルを削除して古いKMLファイルを削除する
- 30. Androidスタジオ - バックエンドデータテーブルから一括データを削除する