Я использую кодовые метки для своей базы данных комнат.Теперь я пытаюсь получить последний идентификатор строки после вставки данных в базу данных моей комнаты.Тем не менее, я застрял в своем хранилище, пытаясь вернуть rowID из моей AsyncTask.
LogEntity.java
@Entity
public class LogEntity {
@PrimaryKey(autoGenerate = true)
private int id;
LogDao.java
public interface LogDao {
@Insert
long insert(LogEntity logEntity);
LogDatabase.java
@Database(entities = LogEntity.class, version = 1)
public abstract class LogDatabase extends RoomDatabase {
private static LogDatabase instance;
public abstract LogDao logDao();
public static synchronized LogDatabase getInstance(Context context){
if (instance == null){
instance = Room.databaseBuilder(context.getApplicationContext(),
LogDatabase.class, "log_database").
fallbackToDestructiveMigration().build();
}
return instance;
}
}
LogRepository.java
public long insertLogs(LogEntity logEntity) {
new InsertLogAsyncTask(logDao).execute(logEntity);
return **
}
private static class InsertLogAsyncTask extends AsyncTask<LogEntity, Void, Long>{
private LogDao logDao;
private InsertLogAsyncTask(LogDao logDao){
this.logDao = logDao;
}
@Override
protected Long doInBackground(LogEntity... logEntities) {
logDao.insert(logEntities[0]);
return logDao.insert(logEntities[0]);
}
}
Я поставил две звездочки, потому что я не уверен, что делать здесь, чтобы получить RowID вставки и является ли мой AsyncTask полностью правильным.
LogViewModel.java
public long insertLog(LogEntity logEntity){
return repository.insertLogs(logEntity);
}
MainActivity.java
long id = logViewModel.insertLog(logEntity);
Я хочу использовать эту окончательную переменную id для будущего использования.