传统的操作系统已经定义了应用程序生命周期,包括进程启动,进程在一个或多个线程上工作,然后进程退出。对于传统操作系统,应用程序用户界面和工作项的生命周期不会超过进程。另外,传统操作系统存在相关的功耗问题和隐私问题。
针对这一点,Meta在名为“Power-efficient application lifecycle”的专利申请中提出了针对AR/VR的功耗和隐私改善方法。
在一个实施例中,应用程序框架可以包括应用程序实例管理器。为了解决与传统操作系统相关的功耗问题和隐私问题,可以使用另一种应用程序框架。其中,可以将应用程序分解为各自的component。通过将应用程序分离到其component,可以为每个component单独触发生命周期事件。每个应用程序可以定义多个“实例”、“presenter”、“worker”和“data provider”,其中每个presenter、worker和data provider都有自己的生命周期。
操作系统可以控制每个应用程序的presenter和data provider,从而最小化AR/VR设备的功耗并改善隐私。
在特定的实施例中,应用程序框架可以包括用于处理由应用程序实现的实例的应用程序实例管理器。应用程序框架同时可以包含一个presentation管理器,用于管理应用程序的presenter。应用程序实例管理器可以为每个活动实例创建实例host来初始激活活动实例。
实例可用于管理一个或多个presenter。例如,消息传递应用程序的实例可以有一个用于登录用户界面的presenter、一个会话视图,并且有用于每个单独会话的单独presenter。
presenter管理器可以对presenter进行重组和管理,例如重新组织presenter的位置和布局,以便显示给佩戴AR/VR设备的用户。
另外,其他应用程序可以访问特定类别的data provider。尽管每个应用程序可能有自己的data provider,但每个data provider可能与一个类别相关联。例如,社交媒体应用程序可以访问自己的data provider和消息传递应用程序的data provider。
应用程序的每个presenter可以追踪应用程序的一个状态。例如,显示新闻提要的presenter可以追踪新闻提要的状态,这样当用户滚动新闻提要时,presenter可以追踪用户在新闻提要中查找的位置。结合使用应用程序实例管理器和presenter管理器来处理实例、data provider和presenter,可以在应用程序之间实现灵活的互操作性,同时可以降低功耗。
Meta指出,通过将应用程序分解为多个component,操作系统可以只调用特定活动所需的component。选择性地调用component可以减少典型应用程序生命周期的功耗。例如,如果只需要来自应用程序的数据,则只调用应用程序的data provider来访问来自数据存储的数据并填充应用程序定义的数据集。换句话说,应用程序的presenter不需要被调用,从而节省了功耗。
在具体实施例中,所述计算系统的操作系统可以调用第一实例和第一presenter。在特定实施例中,操作系统可以使用应用程序实例管理器来调用第一实例,其中第一实例可以管理第一presenter。
在特定实施例中,应用程序实例管理器可以调用一个或多个其他实例,每个实例可以管理各自的presenter。操作系统可以使用应用程序实例管理器来确定根据实例数据库激活对应于第二应用程序的第二实例。
操作系统可以使用应用程序实例管理器来调用第二个实例及其相应的component,例如data provider。
在特定实施例中,可以并行地调用一个或多个实例。操作系统可以使用实例数据库和应用程序实例管理器来确定是否需要调用和/或关闭实例。
如果应用程序实例管理器决定关闭一个实例,则应用程序实例管理器可以关闭一个实例,同时允许应用程序的其他component继续运行。例如,应用程序实例管理器可以关闭应用程序的实例,但应用程序的data provider可以在实例关闭后继续运行。
计算系统的操作系统可以确定第一presenter配置为呈现由data provider获得的数据。在特定实施例中,data provider可以是第二应用程序的多个应用程序component之一。作为一个示例,应用程序可以包括data provider、实例、worker、presenter和其他应用程序component。
计算系统的操作系统可以使用data provider从数据存储访问数据。在具体实施例中,计算系统的操作系统可以使用data provider从数据存储访问数据并填充由第二应用程序定义的数据集。
操作系统可以使用data provider来访问来自第二数据存储的数据并填充由第二应用程序定义的数据集。作为一个示例,data provider可以访问特定类别的数据来填充第二个应用程序定义的数据集。
操作系统可以识别与特定类别相关联的数据存储,并使用data provider访问所识别的数据存储。
在一个实施例中,计算系统的操作系统可以生成用户界面以表示来自第二应用程序定义的数据集的数据。在具体实施例中,所述计算系统的操作系统可使用所述第一应用程序的第一presenter来生成用户界面,以呈现所述第二应用程序定义的数据集中的数据。
可以使用一个或多个实例来管理一个或多个presenter,从而在一个或多个用户界面中呈现来自一个或多个data provider的数据。例如,操作系统可以使用一个或多个实例来管理一个或多个presenter,以便在一个或多个用户界面中呈现来自一个或多个data provider的数据。
在具体实施例中,操作系统可以使用presenter管理器来基于预定义设置和用户设置安排一个或多个用户界面。作为一个示例,用户可以定义一个查看空间以及在哪里放置对应于不同应用程序和操作系统的一个或多个用户界面。
图1示出与计算系统相关联的示例操作系统环境100。在具体实施例中,示例操作系统环境100可以包括分解为component的应用程序。在具体实施例中,操作系统环境100可以包括应用程序manifest102、一个或多个data provider104、一个或多个本地服务106、一个或多个云服务108、一个或多个数据集110、一个或多个数据库112、一个或多个shell服务114、一个或多个实例116、一个或多个presenter118、一个或多个worker120和一个或多个框架。
在一个的实施例中,worker120可以是任意的非用户界面过程,其可能需要实例116和presenter118来运行。实例116可以管理应用实例的状态和生命周期,并可以基于数据集110、woker120和presenter118状态变化在可用的presenter118之间切换。
在具体实施例中,实例116可以具有不同的特权级别。具有较高权限级别的实例116可以创建其他各种类型的实例。在具体实施例中,实例116可以管理应用程序状态的序列化。实例116可以限制为不具有网络访问、不具有用户界面,并且不具有除中介访问之外的存储。
图2示出与计算系统相关联的另一个示例操作系统环境200。操作系统环境200可以具有操作系统环境100的类似component。
在具体实施例中,操作系统环境200可以包括一个或多个data provider、一个或多个本地服务106、一个或多个云服务108、一个或多个数据集110、一个或多个数据存储112、一个或多个实例116和一个或多个presenter118。
环境200的component可以类似于环境100的相同component的功能。数据可以从一个或多个本地服务106和一个或多个云服务108流向一个或多个data provider104。
在特定实施例中,每个正在运行的应用程序可以有实例116。实例可以是应用程序活动的单元。在特定实施例中,活动实例116可以具有可观察的用户界面,例如一个或多个正在运行的presenter118。在特定实施例中,只有特权component可以具有更改任意实例的活动状态的权限。在特定实施例中,实例可以创建其他实例,然后创建实例可以改变所创建实例的活动状态。
在特定实施例中,每个实例116可以具有类型。实例类型可以由各个应用程序定义。实例类型可能决定实例状态的模式。例如,web浏览器实例可以将文档URL作为其状。
在特定实施例中,presenter118可以具有状态。例如对于web浏览器,presenter的状态118可以包括窗口的大小、滚动位置、当前选择和web表单中的值等。在特定的实施例中,实例模式可能包含具有默认值的附加属性。作为一个例子,状态可以默认为初始状态。
在一个实施例中,转换presenter118可负责在实例116切换presenter118时提供平滑转换。在特定实施例中,转换presenter118可以包括在presenter118中,或者是一组单独的presenter。在特定实施例中,当转换显示初始presenter118以及当转换隐藏最后presenter118或终止presenter118时,可以使用转换presenter118。
在特定实施例中,转换presenter118可应用于特定的前后presenter类型。转换presenter118可以访问与所述计算系统的情景相对应的数据。情景可以包括计算系统的元数据。作为示例,计算系统可以使用计算系统的一个或多个传感器、一个或多个应用程序的元数据或计算系统的元数据来确定计算系统的情景。
在转换期间,前后presenter118可以是实时的并且正在更新,以允许任何现有的动画或绑定值继续影响视觉效果。
图3示出了应用实例管理器302的示例环境300。环境300可以包括实例数据库302、应用程序实例管理器304、二进制A 306a、二进制B 306b。应用实例管理器304可以包括一个或多个实例hose310a-310c。
实例数据库302可以包括键值存储312。键值存储312可以包括一个或多个实例项314a-314d。实例数据库302可以包括键值存储312中作为实例条目314a-314d的所有注册实例。每个实例项314可以包括一个应用程序包标识符和一组参数。
举例来说,实例条目314可以包括一个名称空间URL、一个名称和命令行参数。每当要添加新实例时,可以使用实例数据库302注册该实例,并将其作为实例条目314添加到键值存储312中。
在一个实施例中,应用程序实例管理器304可以通过为每个活动实例创建一个实例host310来激活来自实例数据库302的所有活动实例。应用程序实例管理器304可以使用实例host310a-310c管理实例。
应用实例管理器304可以通过从实例数据库302获取活动的和已注册的实例并将它们变为现实来实现实例数据库302。应用程序实例管理器304同时可以终止任何不应该处于活动状态的实例。
如果在实例数据库302中以非活动状态创建了一个新实例,则应用程序实例管理器304不执行任何操作。如果在处于活动状态的实例数据库302中创建新实例,则应用实例管理器304可以为所述新实例创建实例host310。
如果一个实例在数据集中处于非活动状态,应用程序实例管理器304可以找到相应的实例host310并终止实例host310。
例如,如果实例条目314a对应的实例在实例数据库302中处于非活动状态,则应用程序实例管理器304可以找到相应的实例host310并终止实例host310。如果实例数据库302中的实例处于活动状态,则应用程序实例管理器304可以为所述实例创建实例host310。如果实例host310的实例component退出,则可以终止实例host310,反之亦然。
如果一个应用程序component请求另一个应用程序component启动,则实例host310可以根据应用程序manifest元数据解析所述component的实现并调用所述component。
在特定的实施例中,应用程序实例管理器304可以放置多个类似的非本机应用程序component,从而最小化开销。相似性可以根据component是否共享来自应用程序包的角色来确定。在特定实施例中,应用程序实例管理器304可以是始终在线的系统服务。
在特定实施例中,应用程序实例管理器304可以调用依赖component。应用程序component可以具有两个不同的特征。在特定的实施例中,应用程序实例管理器304可以调用应用程序component并根据安全约束将它们合并到共享进程的组中。
应用程序实例管理器304可以连接并管理依赖component的生命周期。这可以包括监视component并在必要时重新启动它们。在特定实施例中,应用程序实例管理器304可以实现各种过程环境。应用程序管理服务可用于追踪已安装的应用程序manifest元数据并触发持久/瞬时应用程序存储或云包下载。
在特定实施例中,可以通过应用程序实例管理器304提供的特殊库将应用程序实例管理器304进程入口点合并到二进制文件中。在具体实施例中,二进制a306a和二进制b306b可以管理其相应的presenter316a-316c。
图4示出了presenter管理器410的示例环境400。presenter管理器410可以在其对实际呈现的场景图的根的所有权中具有唯一的作用。presenter管理器410可以拼接可见面板并在闪烁其他场景的同时将树扩展到全局场景中。
presenter管理器410可以与框架服务通信,并在应用程序创建内容时得到通知。在具体实施例中,presenter管理器410可以从情景引擎接收状态,以便基于当前注意级别定义表示。presenter管理器410同时可以使用状态在用户周围的个人空间中启动和定位应用程序和异步UI。
在具体实施例中,presenter管理器410可以创建volume管理器。可以在应用程序的manifest中列出一个或多个模式。在特定实施例中,presenter管理器410可以构建并维护shell状态。在特定实施例中,presenter管理器410可以基于电源状态改变总体UI密度。
在一个实施例中,如果确定计算设备处于低功耗状态,则presenter管理器410可以减少呈现给用户的总体UI密度。
在特定实施例中,情景处理器可以与情景引擎交互以访问状态。情景处理器可以访问用户的位置和移动状态,并更改用户的环境状态。在特定的实施例中,环境400可以包括诸如活动、事件等情景信号,以启用以人为中心的场景。shell状态和绑定变量可以更新以响应事件。
在具体实施例中,presenter管理器410可以使用电源状态来确定可见的表面和shell面板UI的种类,例如待机电源状态、浏览电源状态和交互电源状态。待机状态可能是所有应用程序和shell启动点都不可见的状态,用户体验完全可见的世界,显示器关闭。
在特定实施例中,当电源状态处于待机状态时,presenter管理器410可以监测通知和应用程序容器事件。通知管理器411可以检测通知数据集查询中的新条目。如果用户设置和情景允许通知,则通知管理器411可以请求与数据集关联的实例为条目提供通知presenter。
在特定实施例中,presenter管理器410可以在presenter管理器410和应用程序416之间保持严格的数据边界。presenter管理器410不具有检查应用程序内容的功能,并且在创建新的内容树以提高安全性时将收到通知。
在一个实施例中,presenter管理器410可以响应测量计算系统的电力使用情况。在具体实施例中,presenter管理器410可以通过关闭和闪烁应用程序来调整应用程序的运行时间,以根据功耗改变系统资源的使用。
名为“Power-efficient application lifecycle”的Meta专利申请最初在2021年12月提交,并在日前由美国专利商标局公布。