Kanzi 4.1.2 迁移指南

使用此迁移指南将 Kanzi 应用程序从 Kanzi 4.1.1 更新到 Kanzi 4.1.2。

不要通过属性存储迭代器对属性存储重新排序

不要使用 PropertyObject::beginPropertyStorage 和 PropertyObject::endPropertyStorage 返回的迭代器来替换、交换属性存储或对其重新排序。PropertyObject 现在将其存储的属性类型描述符按相同顺序保存在一个单独的数组中,以便无需逐个读取存储即可找到某个存储。进行此类更改后,属性查找可能会返回另一个属性的存储,从而导致未定义行为。

单独的数组还会改变 PropertyObject 及其所有派生类的大小。请针对 Kanzi 4.1.2 重新构建您的 Kanzi Engine 插件和应用程序。

客户端视图仅在附加到窗口时才连接到 Kanzi Android Service

现在,KanziServiceSurfaceView、KanziServiceTextureView 或 KanziServiceComposable 客户端视图在附加到窗口时连接到 Kanzi Android Service,并在分离时断开连接。例如,当您将客户端视图从其窗口中移除、替换其 fragment、将其滚动出 ViewPager、RecyclerView 或 LazyColumn,或者离开其 composable 时,该客户端视图会分离。

  • 您在代码中创建的客户端视图会在附加到窗口时连接,而不是在您调用 KanziServiceSurfaceView.connect 或 KanziServiceTextureView.connect 时连接。如果您对未附加到窗口的视图调用 connect,则 onServiceConnected 仅在该视图附加后才会触发。

  • 客户端视图分离期间您发出的调用(例如 pushDataInt)会被客户端丢弃。此前,这些调用会到达 Kanzi Android Service 主机。Kanzi Android Service 主机会保留您在客户端视图分离之前推送的数据。请在 KanziServiceClientListener.onServiceConnected 中推送在客户端视图分离期间发生更改的数据。

  • 每次客户端视图附加到窗口时,onServiceConnected 都会再次触发。

  • 当您对同一客户端视图再次调用 KanziServiceSurfaceView.connect 和 KanziServiceTextureView.connect 时,它们会抛出 IllegalStateException,而不是 AssertionError。通过 XML 使用 serviceHostPackage 特性 (Attribute) 加载的客户端视图已经调用过 connect。

请参阅 客户端视图生命周期。