首页 > 解决方案 > 使用 AsyncTask 将数据写入数据库是否更好?

问题描述

这是我的问题:我有一个应用程序需要在 SQLite 数据库上进行写操作,每秒一次,最好使用 AsyncTask 在这个数据库上写数据?

public void insertData(Data data) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues RecordValues = new ContentValues();
    RecordValues.put("uid", data.getUid());
    RecordValues.put("id_usr", data.getUserId());
    RecordValues.put("id_route", data.getIdRoute());
    RecordValues.put("lat", data.getLatitude());
    RecordValues.put("lng", data.getLongitude());
    RecordValues.put("timestamp", data.getTime());
    RecordValues.put("privacy", data.getTime());

    db.insert("DBNAME", null, RecordValues);
    db.close();
}

DB 是通过使用SqLiteClass.

该应用程序执行了一些繁重的任务,处理实时数据、网络套接字、谷歌地图等,所以我想在这一点上进行优化。

我不知道每秒启动一次 asyncTask 是否更好,我可能会犯错误,所以我们可以谈谈。

提前致谢。

标签: javaandroidandroid-asynctask

解决方案


是的,建议在后台线程中进行数据库操作。您可能会考虑使用AsyncTaskorHandler在后台线程中处理数据库操作,而不是将其放在主 UI 线程中。

您可能还想知道在更改数据库表或将项目插入数据库表时获取数据库的更新。您可能会考虑使用内容观察器来获取有关数据库表中内容更改的通知。请检查LoaderCallbacks功能。

我在这里在 Github中创建了一个项目来演示使用LoaderCallbacks. 但是,我已经将所有数据库操作都放在了 UI 线程中。最好使用AsyncTask或在另一个线程中处理它们Handler


推荐阅读