TGViewer
Android Live 🤖 Android Live 🤖 @android_live · 5.13K subscribers
Post #431 3.72K
​​Single click в Android
#разработка #статьи #опрос

Казалось бы, что может быть проще, чем сделать клик на кнопку. Используй стандартный View.OnClickListener и будь уверен, что кнопка нажмётся. Однако, не всё может быть столь очевидно.

Опытные разработчики сталкивались с какими-то задвоенными действиями в приложении. Например, два запроса в сеть вместо одного. Часто причиной подобного поведения является именно стандартный ClickListener.

Решения может быть два:
• блокировка кнопки до появления какой-то реакции или ответа;
• добавление небольшой задержки при нажатии на кнопку.

Любопытно, что аннотация @OnClick из библиотеки ButterKnife, использовала именно DebouncingOnClickListener под капотом.
Но сегодня, когда основная масса разработчиков использует Kotlin synthetics или View Binding, мы забываем про этот «хак».

Автор в статье напоминает об этой фиче и рассказывает, как просто использовать его, совмещая с extension-функциями Kotlin. Получилось довольно удобно, и теперь можно делать:

my_button.setOnCLick(intervalMillis = 500) {
// Do stuff
}

вместо стандартного клика.

Кто считает, что клик с задержкой — это костыль?
More from @android_live
  1. Oct 5, 2026Почему Android-эмулятор жрёт 8 ГБ? На днях попался репозиторий с CLI-тулзой, которая обеща…
  2. Sep 29, 2026Post #1130
  3. Sep 29, 2026На днях попалась вакансия мечты Вроде всё начинается как неплохо: удалёнка, Kotlin/Jetpack…
  4. Sep 28, 2026На днях ревьювил код, связанный с копированием в буфер обмена И заметил, что многие прилож…
  5. Sep 26, 2026AirDrop на Android, похоже, уже есть на нескольких моделях Android Но, оказывается, всё эт…
  6. Sep 25, 2026Похоже, есть что посмотреть на выходных Недавно вышло интервью с Женей Вороновым Jake Whar…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →