Size: a a a

Kotlin in Mobile

2021 July 05

К

Кемель in Kotlin in Mobile
Я могу сильно ошибаться, но если код компилится, то наверное просто тупит IDE
источник

TT

Turalllb Turalll in Kotlin in Mobile
Я понял что для этого дела используется плагин , вот что то с ним видимо не так
источник
2021 July 06

YZ

Yevgeniy Zarechniy in Kotlin in Mobile
как сбросить фокус у edittext
кроме clearfocus?
источник

YZ

Yevgeniy Zarechniy in Kotlin in Mobile
clearfocus перекидывает фокус дальше... если нету на фрагменте view, который могет его принят, то edittext снова ловит фокус.
источник

IK

Ilya Kokhan in Kotlin in Mobile
источник

YZ

Yevgeniy Zarechniy in Kotlin in Mobile
пасиб)
источник
2021 July 07

CT

Callidus Tenacitas in Kotlin in Mobile
Как интегрировать bottom navigation в приложение с независимыми от неё фрагментами, ведь она требует чтобы ее хостили на активити персонально, как я понимаю?
источник

IK

Ilya Kokhan in Kotlin in Mobile
источник
2021 July 08

D

Dmitry in Kotlin in Mobile
Кто-нибудь знает хорошие примеры реализации Oauth? Чтобы обновлять токен заранее, если текущий через 5 секунд заэкспайрится, уважать заголовой retry-after и т.п.
Что-то даже у окшттп естьспециальный аутентификатор, но он вот ожидает, что мы уже запросили протухший токен и получили 401, заранее запросить нельзя, проверить ретрай - тоже.
источник

AD

Aleksey D. in Kotlin in Mobile
имхо, просто в interceptor затолкать synchronized кусок, который либо просто вернёт токет, либо повесит очередь до тех пор, пока токен не обновится
источник

D

Dmitry in Kotlin in Mobile
Где хранить очередь?
Где хранить сам временный токен и время его обновления? Доступы к этим полям тоже надо синхронизировать... Прямо странно, что приходится делать это руками для такого общепринятого решения.
источник

QH

Quantum Harmonizer in Kotlin in Mobile
synchronized-блок как раз и выстроит треды в очередь
источник

AD

Aleksey D. in Kotlin in Mobile
думаю, общего решения нет потому, что у всех чуть-чуть по-разному работают механизмы

очередь? так synchronized и создаст эту очередь, нет?

fun intercept(chain: Chain): Response {
 val token = storage.getAuthToken()
}

fun getAuthToken(): AuthToken {
   val t = token
   if (t.isExpiresSoon) {
       return synchronized(this) {
           val c = token
           if (c != t) return@synchronized c

           token = api.refresh()
           return@synchronized token
       }
   }

   return t
}
источник

D

Dmitry in Kotlin in Mobile
Он заблокирует мне весь ИО пул, тут надо, чтобы запрос самого токена не оказался в том же пуле, не долго и дедлок получить.
источник

QH

Quantum Harmonizer in Kotlin in Mobile
пусть синхронно выполняется
источник

D

Dmitry in Kotlin in Mobile
вот этот локальный token тоже атомарный должен быть? А то во время чтения гонка будет, если токен сейчас как раз новый записывается
источник

AD

Aleksey D. in Kotlin in Mobile
по идее первый if синхронизированного блока спасет от этого 🤔
источник

D

Dmitry in Kotlin in Mobile
Да не, у тебя в переменной t может быть аброкадабра, потому что локальная переменная сейчас обновляется на другом потоке.
источник

D

Dmitry in Kotlin in Mobile
Ну да, просто пока все потоки ждут токена - ио пул может быть заблокирован и я не смогу даже кеш их базы показать - запросы в базу на том же пуле ходят...
источник

D

Dmitry in Kotlin in Mobile
Ну выглядит красиво. Сразу возникает вопрос - а если офлайн? Надо как-то отлавливать ошибки интернета и останавливать запрос, возвращать их вместо оригинального запроса? Интерцептор так умеет?
источник