有趣的是,它有时正确地执行插入操作。我不知道为什么会发生这种情况,也不知道是怎么发生的。所以,我不知道我在哪里犯了错误。
这是我的项目文件。
@Dao
public interface SentFilesDao {
@Query("SELECT id, name, type, status, dateTime FROM sent")
LiveData<List<SentFilesEntity>> getAllSentFiles();
@Insert(onConflict = OnConflictStrategy.IGNORE)
void insert(SentFilesEntity file);
@Query("DELETE FROM sent")
void deleteAllRecords();
}
(二)SentFilesRepository.java
public class SentFilesRepository {
private SentFilesDao mSentFilesDao;
private LiveData<List<SentFilesEntity>> mAllSentFiles;
SentFilesRepository(Application application) {
AppDatabase db = AppDatabase.getDatabase(application);
mSentFilesDao = db.mSentFilesDao();
mAllSentFiles = mSentFilesDao.getAllSentFiles();
}
LiveData<List<SentFilesEntity>> getAllSentFiles() { return mAllSentFiles; }
public void insert(SentFilesEntity sentFilesEntity) {
new SentFilesRepository.insertAsyncTask(mSentFilesDao).execute(sentFilesEntity);
}
private static class insertAsyncTask extends AsyncTask<SentFilesEntity, Void, Void> {
private SentFilesDao mAsyncTaskDao;
insertAsyncTask(SentFilesDao dao) {
mAsyncTaskDao = dao;
}
@Override
protected Void doInBackground(final SentFilesEntity... params) {
mAsyncTaskDao.insert(params[0]);
Log.e("doInBackground: ", "reached here!"); // no any log in Logcat about this. Weird...
return null;
}
}
}
(三)SentFilesEntity.java
@Entity(tableName = "sent")
public class SentFilesEntity {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
public int s_f_id;
@ColumnInfo(name = "name")
public String s_f_name;
@ColumnInfo(name = "type")
public String s_f_type;
@ColumnInfo(name = "status")
public String s_f_operation_status;
@ColumnInfo(name = "dateTime")
public String s_f_time;
}
(四)SentFilesViewModel.java
public class SentFilesViewModel extends AndroidViewModel {
private SentFilesRepository mRepository;
private LiveData<List<SentFilesEntity>> mAllSentFiles;
public SentFilesViewModel(Application application) {
super(application);
mRepository = new SentFilesRepository(application);
mAllSentFiles = mRepository.getAllSentFiles();
}
public LiveData<List<SentFilesEntity>> getAllSentFiles() { return mAllSentFiles; }
public void insert(SentFilesEntity sentFile) { mRepository.insert(sentFile); }
}
我要做的是:
我的程序通过wifidirect将选定的文件从一个设备发送到另一个设备。在接收或发送文件时,我想保存一些有关文件的信息(如文件名、文件类型(图像、视频、音乐、APK等)、发送/接收日期和时间)和操作(成功或失败)。我能处理所有这些事情。
好吧,得到所有的属性(我上面提到的),不是
结束
. 主要问题是将数据保存到数据库中。为此,我创建了一些必需的文件(我在上面共享了他们的代码)。当文件发送时,我正试图将相关信息插入数据库。但它没有插入。这是我的问题。
好吧,主要代码太长了,不能张贴在这里。不过,我把我最新的代码发布到了GitHub项目和主逻辑中
starts from here
FileStatisticsActivity
.
p、 s:也许分享项目链接不是
,我很抱歉。
谢谢。