我一直在使用代码实验室来实现我的房间数据库持久性。现在我试图在将数据插入我的房间数据库后获取最新的 rowID。但是,我被困在我的存储库中,试图从我的 AsyncTask 返回 rowID。
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 变量以供将来使用。
慕容3067478
相关分类