В моем приложении есть небольшой сервис, который создает много журналов.Поскольку эти журналы важны, мне нравится сохранять их локально для последующего использования, хотя я показываю их использование одновременно.Я решил использовать небольшую базу данных для хранения этих журналов.Таким образом, моя служба легко создает эти журналы, а мое приложение показывает эти журналы пользователям.
Мой журнал действительно прост.Давайте предположим, что мои Entity
и Dao
определены следующим образом:
@Entity(tableName = "logs_db")
public class LogsData {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
private int mId;
@ColumnInfo(name = "level")
private int mLevel;
@NonNull
@ColumnInfo(name = "desc")
private String mDesc;
public LogsData() {
}
@Ignore
public LogsData(int level, @NonNull String desc) {
mId = 0;
mLevel = level;
mDesc = desc;
}
public int getId() {
return mId;
}
public void setId(int id) {
mId = id;
}
public int getLevel() {
return mLevel;
}
public void setLevel(int level) {
mLevel = level;
}
public String getDesc() {
return mDesc;
}
public void setDesc(@NonNull String desc) {
mDesc = desc;
}
}
@Dao
public interface LogsDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
void addLog(LogsData logs);
@Query("DELETE FROM logs_table")
void deleteAll();
@Query("SELECT * FROM logs_table")
LiveData<List<LogsData>> getAllLogs();
}
Хорошо, теперь вот моя проблема.Предположим, что в моей текущей таблице 100 строк, и я добавляю еще 1 запись в журнале на addLog()
.getAllLogs()
вернет 101 строку журналов, потому что она запрашивает всю таблицу.Итак, использование getAllLogs()
- наихудшая идея для чтения журналов из моей таблицы.Потому что для каждой вставки в logs_db
я получу все содержимое таблицы , в то время как важны только новые журналы .
Я пытаюсь изменить Doa
и / или Entity
чтобы найти способ получения только последних добавленных логов.Это означает, что, например, если в таблице 10 строк журнала и добавлено 2 новых, я получу более новую версию 2. Есть идеи, как мне это сделать?
Кстати, если вы считаете эту идеюиспользование Room DB для моих журналов не подходит, я приветствую любые новые предложения.