169 похожих чатов

Всем привет, попытался в MainActivity выполнить запросы к базе данных

через Room

ругалось что в основном треде нельзя выполнять запросы, потому что это тормозит UI. Нашел решение, что при конструкторе класса базы данных можно указать метод allowMainThreadQueries()

Но вот меня интересует другое, как обычно в таких случаях выполняют запросы к бд? Я так понимаю где-то в других тредах асинхронно? Подскажите пожалуйста, спасибо!

22 ответов

16 просмотров

Runnable, ExecutorService, Thread, coroutines

rglitchard- Автор вопроса

спасибо!

тебе нужно использовать или RxJava или корутины. Rx боле тяжелая и многословна, но она мощнее и больше умеет. Корутины проще и развиваются, гугл их пиарит как может. Вот здесь чел дает основы как корутинами пользоваться https://www.youtube.com/watch?v=nTuvmGDZv3c

rxjava больше под жабу, да и там 3я часть уже есть, а она под 8+ ведро) Java 8+ (Android desugar friendly)

rglitchard- Автор вопроса

огромное спасибо, пойду чекать)

В большинстве случаев SQLite достаточно быстрый, чтобы не вносить дополнительную сложность асинхронщиной.

не нужно, пожалуйста, для таких простых задач предлагать такие сложные решения. Обычно встроенных инструментов с головой хватает.

Если человек хочет быть девелпером, лучше сразу ипользовать инструменты без которых все равно не обойтись ни в одном проекте. А если один раз сдать лабу и забыть - тогда да, Runnable хватит

ты шо, как же новомодные простые сложные решения))

Не нужно говорить за все проекты. Runnable вообще не про асинхронность или многопоточность, учите матчасть.

Да ну не смешно уже. Пранк с Android Enterprise Edition вышел из-под контроля.

Так ты в мейнтреде предлагаешь запросы выполнять?

может я чет путаю)

Если они не тормозят — да. Там всякий инфлейт занимает столько времени, что одному запросу в SQLite даже не снилось. Что уж говорить о скорости загрузки классов RxJava или kotlinx.coroutines…

> непосредственный вызов run() новый поток не создаёт ЧТД. Тред — это тред, а вот Runnable — просто кусок кода, где и как его запускать — дело каждого.

по факту это один способ. а че это за сайт такой, там наверно еще много интересного?

https://younglinux.info/java/runnable

Раннбл интерфейс. Это не наследование, а реализация интерфейса

@Harmonizr говорит что Runnable это не многопоточность, а интернет кажет другое

та где ж ты в раннабле потоки увидел?)

Интернет - это какой-то ноу неймный сайт?

http://java-online.ru/java-thread.xhtml https://younglinux.info/java/runnable https://pro-java.ru/java-dlya-opytnyx/realizaciya-interfejsa-runnable-java/

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта