Лучший способ получить данные с сервера и сохранить их в локальной БД? - PullRequest
0 голосов
/ 27 августа 2018

Я загружаю данные с сервера и сохраняю их в локальной базе данных sqlite. Я хочу знать, какой из этих способов лучше всего сделать, чтобы поток пользовательского интерфейса не зависал. В настоящее время я использую залп, и приложение иногда зависает, и я получаю журнал тоже "пропустить кадры". Спасибо.

1 Ответ

0 голосов
/ 27 августа 2018

В Volley onResponse и onErrorResponse вызывается в потоке пользовательского интерфейса. Поэтому, пожалуйста, перенесите логику анализа в 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 
       }
    });      
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...