Как аргументы должны быть переданы в AsyncTask AsyncTask Android

#android #android-asynctask

#Android #android-asynctask

Вопрос:

Я работаю над приложением, в котором более 8 тысяч данных, которые необходимо извлечь с сервера в первый раз и сохранить их в локальной базе данных SQLite, затем через раз оно будет проверять только наличие новых обновлений и сохранять их.

Но проблема в том, что это приложение вылетает при первом запуске из-за цикла for, в котором оно впервые сохраняет данные.Итак, я думал о реализации AsyncTask, но я должен передать

 Response<List<POJOGetLatestData>> or List<POJOGetLatestData> get_all_latest_data
  

Ответ . Поскольку я новичок в этом, я искал документацию и ссылки для этого типа передачи аргументов, но не смог найти хороший ресурс.

Как мне это сделать? Есть ли какой-либо другой удобный способ?

Вот мой код, который я хочу реализовать в AsyncTask

 private void saveToDatabase(Response<List<POJOGetLatestData>> response ,List<POJOGetLatestData> get_all_latest_data) {
    if (response.code() == 200 amp;amp;  get_all_latest_data != null) {

        flag=false;

        for (int i = 0; i < get_all_latest_data.size(); i  ) {
             flag = db.checkWord( Integer.valueOf(get_all_latest_data.get(i).getId()));
            ContentValues wordValue = new ContentValues();
            wordValue.put("id",Integer.valueOf(get_all_latest_data.get(i).getId()));
            wordValue.put("Correct", get_all_latest_data.get(i).getRightWord().toString());
            wordValue.put("Wrong", get_all_latest_data.get(i).getWrongWord().toString());
            wordValue.put("date_time", get_all_latest_data.get(i).getLastUpdate().toString());
              if(flag){

                db.updateWords(wordValue,Integer.valueOf(get_all_latest_data.get(i).getId()));
            }
           else
            {
                db.insertWords(wordValue);
            }

        }

    }
}
  

Запросы к БД ::

   public boolean insertWords(ContentValues values) {

    db.insert("tbl_word_data", null, values);


    return true;
}

public boolean updateWords(ContentValues values, int id) {
    db.update("tbl_word_data", values, "id=" id, null);

    return true;
}
  

Журнал ошибок:: введите описание изображения здесь

Комментарии:

1. это приложение не работает при первом запуске не могли бы вы, пожалуйста, добавить больше информации? Какой тип ошибки вызвал исключение?

2. @GianlucaBenucci Нет, на разных устройствах происходит сбой при разном количестве итераций. для некоторых устройств это происходит на 939-й итерации, а для некоторых других устройств это происходит на 966-й итерации

3. Хорошо, но при сбое не возникло ошибки или исключения?

4. @GianlucaBenucci добавили журнал ошибок с вопросом, пожалуйста, проверьте.

5. Как db создается и где?