当前位置: 首页 > 知识库问答 >
问题:

HoloLens可以强制执行我的应用程序的单个实例吗?

齐献
2023-03-14

在MSFT全息透镜上打开Unity应用程序时,它首先创建一个空白的白框,供用户通过手势定位和放置。用户放置此白框后,应用程序将启动。用户可以通过执行“绽放”手势退出应用(但不一定关闭应用)。应用程序不会运行,前面提到的白框应该会重新出现(表示运行和关闭之间的“暂停”状态)。

问题是,有时应用程序可能已退出,但此白色框不显示。如果没有白色框,则用户无法正常关闭应用程序(通过单击右上角的X)。同样,如果应用程序已退出,而用户在返回下一个会话时不记得这一点,他们自然会再次尝试启动应用程序。如果上一个会话从未实际关闭,则可能会导致新打开的会话出现问题。

我如何限制HoloLens打开我的Unity应用程序的第二个实例,前提是之前打开了一个会话,并且该会话保持运行或从未关闭?

理想情况下,如果应用程序已经打开,当用户尝试打开应用程序时,全息透镜将刷新先前存在的实例,并将其带到用户视图中,或者在尝试打开新会话之前强制关闭先前的会话(以避免不希望的行为)。

通过在HoloLens上强制执行Unity应用程序的单个实例,这是处理此问题的最佳和最可靠的方法吗?或者检测实例是否已打开,并在再次尝试打开应用程序之前关闭该实例?哪一个是首选项,或者取决于首选项?

我在这个主题上找到的外部资源(很多中的一些):
如何确定应用程序是否在HoloLens上运行?这是我在这个主题上找到的最相关的信息来源。不幸的是,它没有涉及到如何做的应用程序是开放的肯定。Unity脚本引用-WSA(Windows应用商店应用)-再次没有提到强制执行单个运行实例
Unity脚本引用-OnApplicationQuit-不确定这是否适用于这种情况,但Unity有一种方法“在退出应用程序之前发送到所有游戏对象”。

在制品:

    private void App_Resuming(Object sender, Object e)
    {
        if (UnityEngine.VR.VRSettings.loadedDeviceName.Equals("HoloLens"))
        {
            UnityEngine.VR.VRDevice.SetTrackingSpaceType(UnityEngine.VR.TrackingSpaceType.Stationary);
            UnityEngine.VR.InputTracking.Recenter();
            UnityEngine.VR.VRDevice.SetTrackingSpaceType(UnityEngine.VR.TrackingSpaceType.RoomScale);
        }
    }

在Initialize方法中(“App.cs”的内部)

    public virtual void Initialize(CoreApplicathtml" target="_blank">ionView applicationView)

添加

    CoreApplication.Resuming += App_Resuming;

目前无法对此进行测试,因为Hololens将连接到一个网络并发出“无互联网,已连接”(尝试了受保护/未受保护的网络)。设备可能需要更新,但我们无法在没有网络连接的情况下检查更新。

共有1个答案

慎兴业
2023-03-14

为了澄清,这不是一个hololens特定的问题,您需要查看的是windows 10 sdk,在windows 8中它被称为墓碑,它是指在不关闭并能够恢复的情况下离开应用程序的行为,这里有一个链接,指向一篇关于在windows 10应用程序中维护状态的文章,讨论和解释的时间太长了,在这里做不到公正。

https://visualstudhtml" target="_blank">iomagazine.com/articles/2015/09/01/its-universal.aspx

https://docs.microsoft.com/en-us/windows/uwp/launch-resume/app-lifecycle#app-执行状态

 类似资料:
  • 问题内容: 假设我的手机上有一个预先存在的Android应用,在其主屏幕上有一个可以单击的按钮。我知道有一种方法可以从正在创建的应用程序中启动该应用程序,但是有没有一种方法也可以自动单击按钮?我可以传递一个参数吗,我将如何使用它呢? 问题答案: 您不能让您的应用按另一个应用上的按钮。那将是巨大的安全漏洞。 但是,另一个应用程序可能具有如何调用它的选项。这将取决于其他应用程序。您可以使用Intent

  • 我在dockerized应用程序和Memcached上遇到了一个问题,要存储一些值,显然,当a启动一个运行Spymemcached客户端的新Docker实例时,所有存储在缓存中的数据都是无效的,所以如果我之前在节点1的缓存中存储了一些值,然后启动节点2,这些值将从Memcached服务器中清除,最后如果a在节点1上再次存储相同的值,并在节点2上查询,它们将共享到两个节点之外,而不清除数据。是预期的

  • 我在Heroku上成功运行了一个节点应用程序。我已经购买了加急SSL证书,一切正常。我去https...并获得一个完整的“绿色条”,证明该站点是通过https提供服务的 但是,非 SSL 标准 http 仍然可用。如何强制应用通过 https 提供服务?谢谢

  • 我已经下载了cloud dsim,甚至执行了cloud dsim示例文件夹中提供的示例。它们在我的系统上运行得非常好。现在,我有一些在Java开发的应用程序。我想在cloud dsim中执行我的应用程序。我该怎么做?

  • 有没有人能说,是否可以通过我的android应用程序执行< code>adb命令。如果有可能执行,如何实现?