【问题标题】:How to get data from SQLite in asynchronously? [closed]如何从 SQLite 异步获取数据? [关闭]
【发布时间】:2023-04-03 19:26:01
【问题描述】:

我在我的onCreate() 中有一个从数据库获取我的活动所需数据的方法,问题是当活动开始时我可以看到它被锁定,直到从数据库中获取数据,所以我会移动到一个AsyncTask

问题是我向数据库发出多个请求,因为我必须获取多个数据,如何使用AsyncTask 来实现它?

AsyncTask 最适合这种情况吗?

我的代码如下所示:

protected void onCreate(Bundle savedInstanceState) {
    LoadDataDB();
}

public void LoadDataDB() {
    myDB = DataBaseHandler.getInstance(this);
    listMenu = myDB.getMenu();
    listTasti = myDB.getTasti();
    listVarianti = myDB.getVarianti();
    listPrinters = myDB.getPrinters();

    if (isFamiglieEnabled) {
        listFamiglie = myDB.getFamiglie();
    }

    if (isAYCEnabled) {
        listAYCE = myDB.getAYCE();
    }
}

.getMenu 等函数看起来像这样:

public ArrayList<MenuConstructor> getMenu() {
    database = this.getReadableDatabase();
    Cursor cursor = database.query(TABLE_MENU, null, null, null, null, null, null);
    ArrayList<MenuConstructor> menuList = new ArrayList<>();
    MenuConstructor contactModel;
    if (cursor.getCount() > 0) {
        for (int i = 0; i < cursor.getCount(); i++) {
            cursor.moveToNext();
            contactModel = new MenuConstructor(Integer.parseInt(cursor.getString(0)),
                    cursor.getString(1), cursor.getString(2),
                    cursor.getString(3));
            menuList.add(contactModel);
        }
    }
    cursor.close();
    database.close();
    return menuList;
}

【问题讨论】:

  • Would AsyncTask be the best fit for this situation? 考虑到它已被弃用,可能不会

标签: java android android-asynctask


【解决方案1】:

使用异步任务

  1. 为每个数据请求创建一个 asyncTask。在 doInBackground 中获取数据并在 postExecute 中更新 UI。

我建议你可以将执行器服务与 Handler 一起使用。将runnable传递给执行器服务执行它并使用处理程序将结果发布到主线程

【讨论】:

    猜你喜欢
    • 2020-07-14
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 2013-05-01
    • 2020-12-17
    • 2016-10-25
    • 2020-06-01
    • 1970-01-01
    相关资源
    最近更新 更多