Матвей Мальков «Ещё один поиск контактов на android»
DESCRIPTION
Многие дайлеры не умеют делать поиск по Т9 клавиатуре. Те, что умеют, в большинстве своем делают поиск только по имени/фамилии контакта или по началу номера, а кто-то только с использованием английского алфавита. В 2GIS Dialer нам хотелось искать все контакты по имени, фамилии, телефону (любому из списка и с любого символа), а так же по должности и месту работу (опционально: e-mail и вебсайт, адрес и группы контактов). Кроме того, нам хотелось, чтобы пользователь на любом языке мог найти свои контакты. И в завершение необходимо было, чтобы весь этот поиск работал быстро. О том, как мы добились прогресса в этом деле я и расскажу.TRANSCRIPT
Еще один поиск контактов на Android
Обо мне
— 2ГИС (Dialer)
— Noveo
Отличное приложение?
— Предсказуемость
— Скорость
— Отзывчивость
Android приложений много
Как много среди них крутых?
Мелочи — самое важное в
приложении
А у других…
Мы решили пойти дальше
— Языки
— Разные поля
— Консистентность
— Быстро
Как мы делали это раньше?
— 56 = [5МНОПмнопJKLjkl] [РСТУрстуMNOmno6]
— (data GLOB ? OR data GLOB ?) AND MIMETYPE in (?, ?, ?)
— ~250ms
Нам не понравилось
Как мы поиск ускоряли
— Препроцессинг
— Т9 Паттерны— Мама = 5252— 2GIS = 2447— あきた = 234
Внезапно : RxJava
— Событийность
— Фукнциональность
— Понятность
— Предсказуемость
Production
Итого
— Первый запуск ~1500 ms
— Обновления ~700 ms
— Первое нажатие клавиши 80-120 ms
— Последующие < 60 ms
— Языки
— Разные поля
— Консистентность
— Быстро