为什么不支持小部件中的自定义视图?

Why there is not support for custom views in widgets?

我不明白为什么 google 在设计小部件时决定不实现对自定义视图的支持,甚至不支持支持库中捆绑的视图,而是决定依赖 RemoteViews

小部件是用户与应用程序交互的重要组成部分,我敢肯定许多开发人员发现自己由于此限制而被迫更改计划

这样做有什么具体原因吗,可能与表演有关?

例如,现在我想在一个小部件中实现一个回收器视图,但我不能,而且我不明白为什么设计一个回收器视图如此困难并且有这么多样板代码

Widgets are such a big part of users interaction with the app

很少有应用实现应用小部件。

Is there a specific reason why this was made

应用小部件的宿主(例如主页 screen/launcher)和应用小部件的发布者需要就可以使用哪些 UI 元素以及如何配置它们达成一致。

例如,您似乎想使用 RecyclerView。没关系,但是,您的应用程序不会呈现应用程序小部件。主机是需要呈现应用小部件的 UI 的主机。因此,如果您要使用 RecyclerView,您的应用程序小部件将在所有缺少 RecyclerView 对应用程序小部件的支持的主机上失败。这包括:

  • 自引入 RecyclerView 以来尚未更新的所有主机(例如,旧设备上的主屏幕)

  • 所有不愿在其应用程序中捆绑 RecyclerView 的主机

  • 所有不愿捆绑任何代码的主机都会导致应用程序小部件呈现支持 RecyclerView

对于成百上千的主机和数万或数十万的应用程序小部件,这种协调变得非常复杂。

另外,它停在哪里?你认为使用 RecyclerView 是合理的,下一个人会认为使用 Facebook 的 Litho 是合理的,而之后的人会认为使用 Android 上发现的一些晦涩的习俗 View阿森纳是有道理的

确保此协议的简单方法是在框架 类 中使用通用定义,例如 RemoteViews,因此在主机和应用小部件提供程序之间有保证一致的定义。但是,RemoteViews 很难以向后兼容的方式进行更改,这就是为什么 Google 迄今为止只做过一次(API 级别 11,引入了 [=20=基于 ] 的选项,例如 ListView)。框架 类 对库一无所知,例如那些提供 RecyclerView 或 Litho.

的库