Alexander
Каждому свое, мне в серверной разработке очень помогала либа, на андроиде правда не использовал ее
Sergey
у меня только английский распознает вообще, потому что язык системы стоит англ. Если это вообще от этого зависит
Сергій
ты прибор для измерения? 😁
Alexander
Я тоже его пилю, ушел из серверной разработки в андроид
Sergey
у меня, например, клава русская, но все равно только англ. распознает
Sergey
может реально от языка системы зависит? пробовал?
Anonymous
Ребят, подскажите, вот у меня есть перманентная запись в коллекцию из одного потока, есть чтение по таймеру (каждые 10 секунд) из этой колекции из второго потока. Использую CopyOnWriteArrayList<Long>. При анализе данных вижу, что есть лаг. Походу чтение из CopyOnWriteArrayList блокирует запись на некоторое время. Какие практики, чтобы этого избежать?
Dmitrii
Anonymous
так вот вопрос в том, как избежать синхронизации? Или я тебя не понял. Я думал мб есть варик быстро создать копию коллекции и читать из нее, чтобы запись вообще не тормозить?
Anonymous
ах да, после прочтения, данные нужно удалять
Anonymous
то есть раз в 10 сек, я должен брать коллекцию, читать из нее, удалять эти прочтенные данные, но запись должна продолжать идти
Sergey
готовенько
Sergey
https://www.wikihow.tech/Change-the-Language-on-Android%E2%80%99s-Voice-Typing-Keyboard
Anonymous
перекладывать данные из первой во вторую и от туда читать?
Олег
читаешь раз в 10 сек, значит раз в 5 сек перекладываешь)00)
Sergey
https://www.wikihow.tech/Change-the-Language-on-Android%E2%80%99s-Voice-Typing-Keyboard
@JohnnySC сработал метод по ссылке? я только чекнул, что такая настройка существует, и у меня как раз по дефолту английский стоит. (9й андроид)
Dmitrii
Чёт залез в настройки Gboard, там голосовой ввод поддерживается где-то для 15 языков
Сергей
Возможно лаги из за времени чтения или приоритетов потоков или еще чего
Sergey
Чёт залез в настройки Gboard, там голосовой ввод поддерживается где-то для 15 языков
там не в Gboard надо, а в Google voice typing залазить. Там арабских только штук 20)
Anonymous
а как быстро склонировать коллекцию?)
Сергей
Через аддОлл?
Anonymous
Через аддОлл?
методы эти знаю, не знаю как быстро это отрабатывает
Сергей
Они нативным копированием памяти обычно херачатся. Очень быстро.
Oleksandr But
вроде работает
Anonymous
MoveBitchISaidMove()
Unat
А читать данные надо каждый раз из полной коллекции или только N последних элементов?
Unat
А то, может, это тот редкий случай, когда "Пойдем, LinkedList, настало твоё время?"
0145
можно как-то получить контент из textview по кол-ву строк. Допустим всего 10 строк, а нужно получить контент первых трех?
Unat
можно как-то получить контент из textview по кол-ву строк. Допустим всего 10 строк, а нужно получить контент первых трех?
в общем случае - нет, длинна строки зависит от размера экрана и шрифта, которые пользователь может поменять. Частные решения существуют, но не всегда просты.
Unat
Пахнет непониманием бизнес-требований
Сергей
Если "строка" определяется как текст до символа абзаца то легко.
Сергей
Это уже три предложения)
Сергей
Или сокращения
Unat
А ещё можно рендерить текст буква за буквой на канвасе размером с TextView и останавливаться, когда наберется 10 строк
Мухаммет
Друзья,хочу для разных flavor сделать строку.Правильно ли я делаю?
Мухаммет
у меня не выходит он просто говорит, что APP_TYPE=""
Unat
Значит неправильно
Мухаммет
а как правильно сделать ?
Мухаммет
че загуглить
Мухаммет
не могу найти решение
Anonymous
А читать данные надо каждый раз из полной коллекции или только N последних элементов?
вообще у меня просто идет перманентная запись в коллекцию и стоит задача сливать эти данные без лага на бек. Вот сперва из коллекции я делаю кэширование в sqlite. Записываю пары: время, значение. Потом раз в 30 минут отправляю батчи на сервер. А на сервере уже видно, что есть лаг. И походу он берется, тогда когда я делаю кэширование в sqlite
Unat
ссылки нет? (посмотреть примерное решение)
нет примерного решения, задача в поставленном виде его не имеет.
Anonymous
Хорошо, а читать данные из коллекции надо каждый раз все или только последние N записей?
раз в 10 секунд я кеширую в sqlite ВСЕ записи из коллекции (при этом коллекцию надо очистить)
Unat
Вооот... вилы.
Unat
Конечно тут будет лаг
Anonymous
вообще я сейчас сделал вот так: getCollection() { CopyOnWriteArrayList<String> readableList = new CopyOnWriteArrayList<String>; readableList.putAll(writableList); writableList.clear(); return readableList; } }
Anonymous
просто скопировал коллекцию и отдал на кэширование в sqlite, а writable очищается
Unat
Ну... так себе решение.
Unat
Я-бы создал новый пусток список под запись, а записанный отдал на растерзание базе.
Unat
Если там всегда запись в конец списка и последовательное чтение при дампе в базу, то ещё и связный список взял-бы.
Sergey
https://stackoverflow.com/questions/7577084/how-to-get-the-current-utc-time-in-seconds/7577097
Да, реально работает через Calendar.get(...). Еще через SimpleDateFormat работает, я там ниже где-то написал...
Anonymous
при чем тут связный список?
Anonymous
данные последовательно записываются, всегда в конец
Unat
Так LinkedList имеет константное время вставки в конец списка, а ArrayList проверяет, что элемент поместится в выделенной памяти и, если нет, то выделяет больше памяти. Кажется так.
Unat
или в начало списка...
Unat
скорее всего в начало
Олег
потому что arrayList - динамический массив, а LinkedList - связный список, где ОТЛИЧНО реализована вставка в конец
Unat
У LinkedList огромные накладные расходы по памяти. И отвратная locality.
Энивей, я не помню детали, но пошёл-бы в гугл за ними, выпади мне такая задача
Unat
Зато я точно помню, что в эрланге отлично реализованы срезы на связных списках
Олег
В ArrayList вставка в конец ещё лучше
если не вылезать за пределы памяти
Сергей
Так LinkedList имеет константное время вставки в конец списка, а ArrayList проверяет, что элемент поместится в выделенной памяти и, если нет, то выделяет больше памяти. Кажется так.
Добавляется память достаточно редко, там алгоритм вроде учитывает типичный рост и для растущих прибавляет все больше.
Mike
если не вылезать за пределы памяти
В LinkedList каждая вставка в каком-то смысле вылезает
Сергей
Что то вроде видел в коде, да
Unat
Но вообще, я не думаю, что выбор алгоритма списка тут будет критичен, достаточно перестать копировать ненужные данные
Олег
В LinkedList каждая вставка в каком-то смысле вылезает
но всё ещё дешевле создания нового массива и копирования
Mike
вангую, что у LinkedList предсказуемая, стабильная скорость вставки, он она меньше, чем в ArrayList
Unat
где бенчмарки?
https://www.programcreek.com/2013/03/arraylist-vs-linkedlist-vs-vector/