从服务器获取数据并将其保存到本地数据库的最佳方法?

时间:2018-08-27 11:17:23

标签: android performance background-process

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

1 个答案:

答案 0 :(得分:0)

在Volley中,在UI线程上调用onResponse和onErrorResponse。因此,请将解析逻辑移入parseNetworkResponse(因为这是在后台线程中完成的),或者您可以在收到OnResponse中的响应后,使用Executors(或ExecutorServices,取决于您的用例)或AsyncTask切换线程,并将数据保存在本地数据库,如下所示。

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