¿Por qué los widgets de aplicaciones de Android admiten un conjunto limitado de tipos de vistas?

Creo que la razón es la ingeniería.

El host del widget de la aplicación (normalmente la pantalla de inicio) se comunica con la aplicación que posee y ejecuta el widget utilizando el mecanismo Binder IPC. La aplicación utiliza una instancia de RemoteViews http://grepcode.com/file/reposit… (enlace a la fuente de Android) como proxy del host. El host tiene su propio objeto RemoteViews para recibir las llamadas IPC. Los mensajes que normalmente serían una llamada a un método en la misma VM se empaquetan en una Parcel .

Las razones para limitar los widgets podrían ser:

  • Límites al número de acciones que se pueden enviar a través de IPC. Esto podría ser un límite de mantenimiento de código / características, y no solo técnico. En RemoteViews hay una Action clase privada que encapsula las llamadas a métodos en parcelas y ejecuta parcelas.
  • Velocidad de IPC. Las Action deben cruzar el Binder desde el RemoteViews local al remoto. Los tipos de vista más complejos pueden ser demasiado lentos para IPC.