Для адаптера, который я написал, я хотел бы иметь небольшую задержку для фильтра (чтобы не запускать операцию фильтрации для каждого повторяющегося ключа и ждать долю секунды до тех пор, пока пользователь не замедлит его ввод, поскольку список для фильтрации потенциально достаточно большой, и для работы фильтра потребуется несколько 100 мс).Альтернатива для задержки запросов фильтра для Filter.filter(), поскольку интерфейс Delayer скрыт?
Рассматривая источник для класса фильтра, он предоставляет именно такую возможность, поскольку имеет открытый интерфейс Delayer, который используется для получения времени задержки при отправке сообщения (через sendMessageDelayed()
) для выполнения фактического фильтра на отдельном рабочем потоке (чтобы выйти из основного потока пользовательского интерфейса). Он также удаляет любое предыдущее сообщение в очереди, которая еще не выполнена (из-за задержки).
Пока все хорошо. Кажется совершенно простым, чтобы просто реализовать этот интерфейс и расширить класс Filter.
Однако по какой-либо причине функция установки Delayer аннотируется как @hide
, поэтому строго говоря это не должно использоваться и может быть удалено в любых будущих обновлениях SDK. Это означает, что я был бы глуп, чтобы полагаться на него.
Каков наилучший способ решить эту проблему без необходимости повторного внедрения полного класса фильтра (что кажется глупой задачей)?
Я предполагаю, что одним из альтернативных вариантов было бы установить и использовать мой собственный поток обработчика и создать сообщение с задержкой, чтобы вызвать функцию фильтра, но это кажется немного тяжелой сдачей?