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