java - 使用 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 是否更好,我可能会犯错误,所以我们可以谈谈。
提前致谢。
解决方案
是的,建议在后台线程中进行数据库操作。您可能会考虑使用AsyncTask
orHandler
在后台线程中处理数据库操作,而不是将其放在主 UI 线程中。
您可能还想知道在更改数据库表或将项目插入数据库表时获取数据库的更新。您可能会考虑使用内容观察器来获取有关数据库表中内容更改的通知。请检查LoaderCallbacks
功能。
我在这里在 Github中创建了一个项目来演示使用LoaderCallbacks
. 但是,我已经将所有数据库操作都放在了 UI 线程中。最好使用AsyncTask
或在另一个线程中处理它们Handler
。
推荐阅读
- django - Django:输入密码后显示视图
- javascript - 如何使用 keras.js 进行预测
- python - 在 pandas 中计数并将输出分配给变量
- gcc - 包括本地机器上 Boost 区域的路径
- java - 在 spring-boot 中使用 RestTemplate 返回 404
- python - 使用 Python 对 wav 文件每秒执行 FFT
- unix - Unix命令在一个文件中查找具有在另一个文件中找不到键的行
- node.js - 尝试推送时 Mongoose 数组为空
- pytorch - 与 pytorch 权重的元素乘法
- django - 致命:用户的密码验证失败/但用户存在