android - 从服务器获取数据并将其保存到本地数据库的最佳方法?
问题描述
我正在从服务器下载数据并将其存储在本地 sqlite db 中。我想知道这是执行此操作的最佳方法,这样我的应用程序 ui 线程就不会冻结。目前我正在使用 volley 并且应用程序有时会冻结,并且我也会获得日志“跳帧”。谢谢。
解决方案
在 Volley 中,onResponse 和 onErrorResponse 在 UI 线程上调用。因此,请将您的解析逻辑移动到 parseNetworkResponse 中(因为这是在后台线程中完成的),或者您可以使用 Executors(或 ExecutorServices 取决于您的用例)或 AsyncTask 在您收到 OnResponse 响应并将数据保存在如下所示的本地数据库。
public void onResponse(JSONObject response) {
Executor executor = Executors.newSingleThreadExecutor();
executor.execute(() ->
// your database code
);
}
或者
public void onResponse(JSONObject response) {
AsyncTask.execute(new Runnable() {
public void run() {
// your database code
}
});
}
推荐阅读
- php - Yii有些用户无法登录
- c# - 访问继承的泛型类的属性
- jestjs - 电极:在构建时将 Jest 测试文件排除在 /lib 之外
- c# - Xamarin.Forms Azure.Devops 构建失败
- python - 为什么在 sklearn GridsearchCV SVM 中使用 class_weight 时会出错?
- angular - Angular - 如何正确测试在 Observable 订阅块中执行的操作?
- sql - 基于 2 个 ID 的 PostgreSQL 最近日期
- c# - 事件处理程序未删除
- php - mysql 从另一个选择查询值中减去一个选择查询
- yeoman - 等待 this.fs.copyTpl 在 Yeoman Generator 上完成