Size: a a a

Android Developers

2020 August 12

АА

Александр Андрухов... in Android Developers
Подскажите, вызываю дважды метод в разных потоках, который загружает из нетворка данные (картины) и добавляет в Room.
Одна и та же загрузка данных. Почему-то первая запись повторяется (и это в дальнейшем вызывает ошибку). Проверку на то, что запись с таким же public_id есть, она не проходит.
источник

АА

Александр Андрухов... in Android Developers
Если запускаю через дебаг - ошибки нет почему-то.
источник

KB

Konstantins Bogdanov... in Android Developers
Александр Андрухов
Подскажите, вызываю дважды метод в разных потоках, который загружает из нетворка данные (картины) и добавляет в Room.
Одна и та же загрузка данных. Почему-то первая запись повторяется (и это в дальнейшем вызывает ошибку). Проверку на то, что запись с таким же public_id есть, она не проходит.
может у тебя где-то гонка?
источник

АА

Александр Андрухов... in Android Developers
Konstantins Bogdanovs
может у тебя где-то гонка?
Коллизия какая-то?
источник

АА

Александр Андрухов... in Android Developers
Konstantins Bogdanovs
может у тебя где-то гонка?
странно, что назначает id = 2. Значит на тот момент id = 1 точно занят и запись есть
источник

S

Sergey S. in Android Developers
Александр Андрухов
Подскажите, вызываю дважды метод в разных потоках, который загружает из нетворка данные (картины) и добавляет в Room.
Одна и та же загрузка данных. Почему-то первая запись повторяется (и это в дальнейшем вызывает ошибку). Проверку на то, что запись с таким же public_id есть, она не проходит.
Мб public_id является primary key в бд?
источник

UM

Utsr Mapper in Android Developers
что делать?
источник

ES

Egor Sigolaev in Android Developers
Александр Андрухов
Подскажите, вызываю дважды метод в разных потоках, который загружает из нетворка данные (картины) и добавляет в Room.
Одна и та же загрузка данных. Почему-то первая запись повторяется (и это в дальнейшем вызывает ошибку). Проверку на то, что запись с таким же public_id есть, она не проходит.
Так тебе надо залокать один поток
источник

АА

Александр Андрухов... in Android Developers
Sergey S.
Мб public_id является primary key в бд?
только unique
источник

АА

Александр Андрухов... in Android Developers
Egor Sigolaev
Так тебе надо залокать один поток
приостановить?
источник

d

danilshik in Android Developers
Egor Sigolaev
Так тебе надо залокать один поток
так и в базу данных нужно вносить из одного потока
источник

S

Sergey S. in Android Developers
Ну значит что-то не так мапится, раз такая штука получается
источник

d

danilshik in Android Developers
danilshik
так и в базу данных нужно вносить из одного потока
для этого и используют Syncronized для instance room
источник

ES

Egor Sigolaev in Android Developers
Александр Андрухов
приостановить?
Нет, вызови синхронайзд, как написали ниже
источник

ES

Egor Sigolaev in Android Developers
Egor Sigolaev
Нет, вызови синхронайзд, как написали ниже
Чтобы только один поток мог выполнить эту операцию
источник

ES

Egor Sigolaev in Android Developers
Можешь про многопоточку почитать или посмотреть, полезно будет
источник

АА

Александр Андрухов... in Android Developers
Спасибо. Да я в принципе про многопоточку знаю. Но у бд же транзакции есть, которые решают проблемы одновременного доступа...
источник

АА

Александр Андрухов... in Android Developers
Попробую синхронизацию добавить, спасибо
источник

UM

Utsr Mapper in Android Developers
Utsr Mapper
что делать?
Или API ни на что не влияет
источник

d

danilshik in Android Developers
Utsr Mapper
Или API ни на что не влияет
ничего, ставьте другой образ
источник