首页 > 编程知识 正文

uwp版和exe哪个好,qt点击按钮退出程序

时间:2023-05-05 01:46:14 阅读:47751 作者:4793

如何确保在uwp APP应用程序结束时可以添加它? 实现需求思路总结参考

需求

我最近在做UWP的项目。 其中有一项需求是统计使用者使用APP的时间。

该想法记录用户打开APP的时刻t1; 然后,在关闭APP的时刻记录第二个时刻t2。 在APP结束前上传时间差t2-t1。 问题在于,需要知道如何知道关掉APP的时机,也就是说,需要知道关掉APP的事件。

带着这样的问题,我们开始在uwp上寻找这样的事件。 在uwp的CoreApplication类中,发现了可以满足我们需要的事件,Exiting事件,我们马上在App.xaml.cs上处理这个事件。

publicapp ((this.initialize component ) ); this.Suspending =OnSuspending; coreapplication.exiting=(s,e ) ) debug.writeline (' core application.exiting ' ); (; }在第7行添加一个断点,看看程序在关闭APP时是否会跑进。 结果,我很失望。 关闭APP时,发现程序没有运行到断点。 然后查找文档,微软的文档告诉我:“Windows Phone 8,thisapiissupportedinnativeappsonly .” 看来这条路不通。

于是,当我们开始启用谷歌编程时,uwp在窗口S10 creators update (10.0.15063.0 )之后引入了一个名为SystemNavigationManagerPreview的类这个类只是为用户提供一种响应程序关闭的方法,也就是“关闭请求”事件。 根据微软文档,当用户单击标题栏中的“关闭”按钮时触发事件。 此外,文档还说明要使用此事件,必须首先打开confirmAppClose限制功能。

打开方法如下。

将以下代码添加到项目的Package.appxmanifest中:

xmlns 3360 RES cap=' http://schemas.Microsoft.com/appx/manifest/foundation/window S10/restricted capabilities '

RES cap : capability name=' confirmappclose ' /

打开限制功能后,必须在代码中处理关闭请求的事件。

公共主页面((this.initialize component ) ); 系统管理器预览. getforcurrentview ().closerequested=(s,e )={ var deferral=e.GetDeferral; //doextrataskheredebug.writeline (' doextrataskhere ); deferral.Complete (; (; }实验证明,如果迫不及待地执行,则在关闭APP时,output确实有Do extra task here的日志输出。 这表明已启用“关闭请求”事件。说明:代码var deferral=e.GetDeferral (; 和deferral.Complete (; 需要添加。 这将确保uwp APP应用程序在extra任务完成后退出。

因为总结了CloseRequested事件找到了,所以我们的需求可以解决。 当然,在此事件中,您还可以做更多的事情来改善用户体验,例如在关闭APP时打开一个对话框,询问是否存储用户数据。

程序员的工作是不断填补漏洞的过程。 记忆力不如不好的笔头好。 写这篇博文,记录自己填补漏洞的过程,让自己在第二次填补漏洞时也不那么辛苦。 希望能对需要的伙伴有所帮助。

演示代码。

特殊- and-restricted-capabilities (https://docs.Microsoft.com/en-us/windows/uwp/packaging/app-capapabililities ) special-and-restricted-capabilities (https://docs.Microsoft.com/en-us/windows/uwp/pawp redirected from=msdn

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。