由于无法在onBindSlice()内完成长时间的操作,因此我正在从onSlicePinned()方法从服务器获取数据,然后将其显示在切片中。但是我不知道何时调用此函数。

我以为每次我们重新启动Assistant时都会调用它(即杀死它后再启动Assistant)。在Slice-Viewer应用程序上进行测试时,它正在工作,每次我杀死Slice Viewer并再次启动时,都会与onSliceBind()一起调用onSlicePinned(),但对于Google Assistant则不会。那么,这是错误还是应该如此?
如果这是onSlicePinned()的工作方式,那么在启动应用程序后每次调用onBindSlice()时,我有什么方法可以获取数据。

最佳答案

要将内容从服务器加载到Slice中,您应该在此处遵循延迟的内容最佳做法:

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

tl; dr是,您应该立即返回一些内容,然后关闭并加载/处理您的内容,一旦内容准备好,请调用notifyChange(),这将导致再次调用onBindSlice(),您可以在其中返回带有新内容。

10-08 03:01