Обновление данных в ломтиках 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()
вызывается снова, где вы можете вернуть фрагмент с новым содержанием.