首页 > 解决方案 > 从服务器获取数据并将其保存到本地数据库的最佳方法?

问题描述

我正在从服务器下载数据并将其存储在本地 sqlite db 中。我想知道这是执行此操作的最佳方法,这样我的应用程序 ui 线程就不会冻结。目前我正在使用 volley 并且应用程序有时会冻结,并且我也会获得日志“跳帧”。谢谢。

标签: androidperformancebackground-process

解决方案


在 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 
       }
    });      
}

推荐阅读