Тяжелый код платформы порождает задержку пользовательского интерфейса
Я использую MethodChannel.invoke
вызвать некоторый код платформы для возврата значков приложений как Uint8List
s. Это происходит для списка всех приложений на устройстве (может быть довольно много), отображаемого как FutureBuilder
в ListView.builder
,
Это вызвало большое заикание при быстрой прокрутке в ListView
, поэтому я изменил его так, чтобы все значки приложений были предварительно загружены перед отображением ListView. Это исправляет прокрутку, но пользовательский интерфейс очень загружен во время загрузки значков.
Я полагаю, что проблема может быть такой же, как и эта, и я не должен загружать значки в потоке пользовательского интерфейса, как сейчас. Тем не менее, глядя на документы дляcompute
Я не думаю, что смогу использовать его для вызова кода платформы.
Есть ли другой способ избежать лаги интерфейса?
1 ответ
Предложение Пскинка об использовании HandlerThread
сделал трюк! Теперь я могу плавно прокручивать даже без предварительной загрузки.