小编Zig*_*igo的帖子

使用AsyncTask时如何获取插入对象的ID?

我必须创建一个帐户才能提出这个问题,因为我找不到正确的方法。唯一接近的是这里的问题,但它并没有完全解决,我仍然陷入困境。开始了...

我正在尝试构建一个遵循尽可能多的架构组件原则的应用程序。我目前正在尝试在一个数据库表中添加一行,并获取该行的 ID 作为返回,然后在另一个表中插入一行,并引用第一个表。

我已经创建了我的数据库对象:

@Entity(indices = {@Index("id")})
public class Search {

    @PrimaryKey(autoGenerate = true) private int id;
...
Run Code Online (Sandbox Code Playgroud)

以及对应的DAO:

@Dao
public interface SearchDao {

    @Insert
    long insert(Search search);
...
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我的 DAO 返回一个带有创建的 ID 的长整型值。这是我之前链接的问题中指出的行为,并记录在此处

由于我遵循 Android 架构组件原则,因此我使用 Repository 类来完成所有与数据库相关的工作。在此存储库中,我创建了一个公共方法来插入一个新对象,该方法创建并执行一个 AsyncTask 来完成这项工作:

public class Repository {
    public void insertSearch(Search search) {
        new insertSearchAsyncTask(this.mSearchDao).execute(search);
    }

...
    private static class insertSearchAsyncTask extends AsyncTask<Search, Void, Long> {

        private SearchDao mAsyncTaskDao;

        insertSearchAsyncTask(SearchDao dao) {
            this.mAsyncTaskDao = dao;
        } …
Run Code Online (Sandbox Code Playgroud)

java android repository android-asynctask

5
推荐指数
0
解决办法
358
查看次数

标签 统计

android ×1

android-asynctask ×1

java ×1

repository ×1