Обновление данных в ломтиках Android с помощью onSlicePinned

Поскольку длительные операции не могут быть выполнены внутри onBindSlice (), я извлекаю данные с сервера из метода onSlicePinned() и затем показываю их по частям. Но я не могу понять, когда вызывается эта функция.

Я думал, что он будет вызываться каждый раз, когда мы начинаем помощника (то есть запускаем помощника после его убийства). Он работает во время тестирования в приложении Slice-Viewer, каждый раз, когда я отключаю Viewer Slice и запускаю заново, вызывается onSlicePinned () вместе с onSliceBind (), но не в случае с Google Assistant. Так это ошибка или так и должно быть? И если это то, как onSlicePinned() должен работать, то есть ли способ получить данные каждый раз, когда onBindSlice () вызывается после запуска приложения.

1 ответ

Решение

Чтобы загрузить контент с сервера в Slice, вы должны следовать рекомендациям по отложенному контенту здесь:

https://developer.android.com/guide/slices/templates

Tl; dr: вы должны немедленно что-то вернуть, затем уйти и загрузить / обработать ваш контент, как только контент будет готов, позвоните notifyChange() что приведет к onBindSlice() вызывается снова, где вы можете вернуть фрагмент с новым содержанием.

Другие вопросы по тегам