UWP 应用如何注册少于15分钟间隔的后台应用?

zcxsythenew UID.911687
2015-12-12 发表

近期准备为***链接停止解析***添加 Silverlight 版本的支持。(我计划使它支持所有版本的 Windows Phone,从 WP 7 到 Windows 10。)
然而没想到 Silverlight 应用竟然是支持注册极短的时间的后台任务。代码如下:

[mw_shl_code=csharp,false]ScheduledActionService.LaunchForTest("periodicTaskName", TimeSpan.FromSeconds(60));/*60秒后运行名字叫“periodicTaskName”的后台任务*/[/mw_shl_code]

在后台任务的末尾加上这个代码,便可以实现每隔60秒运行一次后台任务。部署到模拟器后发现是有效的。

但是在 UWP 里面没找到有关计划任务的 api,只有后台任务,且最低间隔15分钟。

[mw_shl_code=csharp,true]var builder = new BackgroundTaskBuilder();
builder.Name = "taskName";
builder.TaskEntryPoint = "Task.Class1";
builder.SetTrigger(new TimeTrigger(15, false));/*15分钟运行一次后台任务。Visual Studio 提示:低于15分钟会抛出异常*/
BackgroundTaskRegistration task = builder.Register();[/mw_shl_code]

“节电模式动态磁贴”这个东西对时间的要求很高,15分钟的间隔已经很不准了。那么 UWP 应用有没有办法像 Silverlight 一样注册低于15分钟间隔的后台任务呢?

标签: 如何

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
龍影 UID.708954
2015-12-12 回复

不明所以,大神来解答

limi****nsuo UID.542512
2015-12-12 回复

uwp官方是不允许的,但是其实可以实现类似时钟这种磁贴,但是相当麻烦!

zcxsythenew UID.911687
2015-12-12 回复

Quote***链接停止解析***
uwp官方是不允许的,但是其实可以实现类似时钟这种磁贴,但是相当麻烦!


如何实现?

现在如果这样的话,WP 8 Silverlight 版本的体验反而比 UWP 要好了,这不太好吧!

yuri****ster UID.879774
2015-12-12 使用 Lumia 925 回复

楼主你反倒提醒我了 以前一直以为后台最低间隔是30分钟。。。。

zcxsythenew UID.911687
2015-12-12 回复

Quoteyuriismaster 发表于 2015-12-12 18:47
楼主你反倒提醒我了 以前一直以为后台最低间隔是30分钟。。。。


以前都说系统限制最少30分钟,还有新闻说 WP 8.1 开始支持缩短至一分钟了。结果现在看来正好相反……

zcxsythenew UID.911687
2015-12-12 回复

***链接停止解析*** ***链接停止解析***

qiqiminmin UID.638527
2015-12-12 回复

本帖最后由 qiqiminmin 于 2015-12-12 22:21 编辑

模仿GPS的background task,有gps tracking的例子,或者陀螺仪的,当gps变化或者陀螺仪角度变化. 估计要自己有个background task一直在运行。用类似的方法更新您的tile task. 我是这么想的。

如果按照微软的官方支持,最少只能小到15分钟。

qiqiminmin UID.638527
2015-12-12 回复

本帖最后由 qiqiminmin 于 2015-12-12 22:29 编辑

Quote***链接停止解析***
这个说法很玄幻,能具体点吗?
哪个 API?例子在哪?


( ̄▽ ̄)",其实只是自己的设想啦。

专门记录跑步的软件,可以记录GPS信息,每次当GPS变化时就进行更新。那我们也可以假设,每次GPS更新时,利用这种方法,来更新您的tile.我可以给您提供gps tracking的例子。

这是传感器的例子,这其实是个讨巧而已,可以监控的控多。比如陀螺仪的角度啊什么的。
***链接停止解析***

zcxsythenew UID.911687
2015-12-12 回复

Quoteqiqiminmin 发表于 2015-12-12 22:18
模仿GPS的background task,有gps tracking的例子,或者陀螺仪的,当gps变化或者陀螺仪角度变化. 估计要自 ...


好吧,这个解法也很玄幻,要靠定位来更新磁贴,感觉很费电啊。
到时再看看吧,Silverlight 版本现在还未上架,如果能上架的话说明微软日了够了,也说明我日了够了,早知不开发 UWP 直接上 Silverlight,毕竟 1 分钟的更新间隔!

qiqiminmin UID.638527
2015-12-12 回复

Quote***链接停止解析***
好吧,这个解法也很玄幻,要靠定位来更新磁贴,感觉很费电啊。
到时再看看吧,Silverlight 版本现在还未 ...


嗯,我也查了资料,似乎微软设置的最低的是15分钟。也许是担心太多软件使用耗电吧。 Silverlight毕竟是针对电脑的。

qiqiminmin UID.638527
2015-12-12 回复

本帖最后由 qiqiminmin 于 2015-12-12 22:59 编辑

Quote***链接停止解析***
好吧,这个解法也很玄幻,要靠定位来更新磁贴,感觉很费电啊。
到时再看看吧,Silverlight 版本现在还未 ...


有软件叫做clock tile 似乎可以。( ̄▽ ̄)",可以去看看去看看。他每分钟都可以更新。如果他能实现,应该还是有方法的。

还真有,方法可能要讨巧的。
***链接停止解析***

zcxsythenew UID.911687
2015-12-13 回复

Quoteqiqiminmin 发表于 2015-12-12 22:53
有软件叫做clock tile 似乎可以。( ̄▽ ̄)“,可以去看看去看看。他每分钟都可以更新。如果他能实现,应该 ...


看了代码,像是每4小时就把接下来每分钟的磁贴更新一并地添加到更新计划里去,但这并不适用于我这个节电模式动态磁贴,没法一下子计划好4个小时内的更新动作。

你看他的代码:[mw_shl_code=csharp,true]for (var startPlanning = updateTime; startPlanning < planTill; startPlanning = startPlanning.AddMinutes(1))
//startPlanning, updateTime, planTill 类型:DateTime
//前文定义:updateTime 当前时刻+1分钟
//前文定义:planTill 当前时刻+4小时
{
Debug.WriteLine(startPlanning);
Debug.WriteLine(planTill);

try
{
var tileXml = string.Format(xml, startPlanning.ToString(cultureInfo.DateTimeFormat.ShortTimePattern), startPlanning.ToString(cultureInfo.DateTimeFormat.LongDatePattern));
XmlDocument document = new XmlDocument();
document.LoadXml(tileXml);

ScheduledTileNotification scheduledNotification = new ScheduledTileNotification(document, new DateTimeOffset(startPlanning)) { ExpirationTime = startPlanning.AddMinutes(1) };
tileUpdater.AddToSchedule(scheduledNotification);
//变量 startPlanning 枚举4个小时内的时刻,将每时刻的磁贴更新添加到计划中

Debug.WriteLine("schedule for: " + startPlanning);
}
catch (Exception e)
{
Debug.WriteLine("exception: " + e.Message);
}
}[/mw_shl_code]

巨****室 UID.1254851
2015-12-13 使用 Lumia 640 XL 回复

不懂,帮顶

qiqiminmin UID.638527
2015-12-13 回复

本帖最后由 qiqiminmin 于 2015-12-13 00:33 编辑

Quote***链接停止解析***
看了代码,像是每4小时就把接下来每分钟的磁贴更新一并地添加到更新计划里去,但这并不适用于我这个节电 ...


小小建议。

【1】您其实可以计划每15分钟的,不必要是4小时
【2】在每次收到ScheduledTileNotification的时候,你实现您的动作。

不过uwp很多东西是非常不完善的,不完善到很多地方看了有点抓狂的

zcxsythenew UID.911687
2015-12-13 回复

Quoteqiqiminmin 发表于 2015-12-13 00:30
小小建议。

【1】您其实可以计划每15分钟的,不必要是4小时


每次收到 ScheduledTileNotification 的时候实现动作?什么意思?
这个 ScheduledTileNotification 应该不是一个 Notification(通知)吧,是一个更新计划。

qiqiminmin UID.638527
2015-12-13 回复

本帖最后由 qiqiminmin 于 2015-12-13 08:02 编辑

Quote***链接停止解析***
每次收到 ScheduledTileNotification 的时候实现动作?什么意思?
这个 ScheduledTileNotification 应该 ...


Scheduled Tile Notification, 应该叫做 计划好的磁铁更新通知吧, 我一直把它当作notify.. 它的namespace是 Windows.UI.Notifications.

比如做时钟,不可能一开始就设置好几个小时之后的时间,也是在一定时候有这个动作

//获得当前时间
getCurrentTime

你把这个获得当前时间,换成自己想要做的东西。
就用 async await...

应该还会有类似的,参考参考应该可以。( ̄▽ ̄)",不过我还是建议您还是用Silverlight吧。

zcxsythenew UID.911687
2015-12-13 回复

Quoteqiqiminmin 发表于 2015-12-13 08:01
Scheduled Tile Notification, 应该叫做 计划好的磁铁更新通知吧, 我一直把它当作notify.. 它的name ...


你看回13楼的代码,真的是进行一次后台任务就做好4小时内每分钟的计划。

我现在倒是想用 Silverlight ,可是因为发布了 UWP,现在删不掉了。

vbfool UID.352791
2015-12-13 回复

你们搞混了,这个不是用后台任务来解决的,我推荐你们看一下这篇文章,GPS该如何用。

***链接停止解析***

这篇文章就是Win10怎么像以前SL一样锁屏访问GPS。

zcxsythenew UID.911687
2015-12-13 回复

Quotevbfool 发表于 2015-12-13 13:47
你们搞混了,这个不是用后台任务来解决的,我推荐你们看一下这篇文章,GPS该如何用。

http://www.cnblogs. ...


我不想要 GPS,只想要少于 15 分钟间隔的后台任务。

zcxsythenew UID.911687
2015-12-13 回复

Quote***链接停止解析***
Scheduled Tile Notification, 应该叫做 计划好的磁铁更新通知吧, 我一直把它当作notify.. 它的name ...


问题算解决了,注册后台任务用 UserPersent 这个 SystemTrigger 就可以了,每次解锁都可以自动更新。也算解决了。奇怪的是我在之前版本的 Windows 10 移动版设置的时候好像没有效果……
现在只剩下 WP 8.1 版本最落后了,好在有系统自带的节电模式,应该没多少人用。(插:说得好像你这软件下载量很大似的)

tmp00000 UID.995403
2015-12-13 回复

你小心认证过不了

zcxsythenew UID.911687
2015-12-13 回复

Quotetmp00000 发表于 2015-12-13 19:01
你小心认证过不了


现在的 UWP 版本已经可以了。Silverlight 版本估计悬。

Tenny UID.296645
2015-12-13 使用 Lumia 920T 回复

我一定会卸载这种应用,太耗电了,没必要

zcxsythenew UID.911687
2015-12-13 使用 Lumia 1320 回复

本帖最后由 zcxsythenew 于 2015-12-13 20:08 编辑

QuoteTenny 发表于 2015-12-13 19:51
我一定会卸载这种应用,太耗电了,没必要


当然首先你得按事实说话,往往跟你心里想的很不一样。
***图片停止解析***
***图片停止解析***

看吧,24小时内耗电1.2%,其中只有8%是后台。也就是说,真正的后台占用只有1.2%*8%=0.096%。

qiqiminmin UID.638527
2015-12-13 回复

本帖最后由 qiqiminmin 于 2015-12-13 22:22 编辑

Quote***链接停止解析***
问题算解决了,注册后台任务用 UserPersent 这个 SystemTrigger 就可以了,每次解锁都可以自动更新。也算 ...


那就好。( ̄▽ ̄)",我也学习了。 我看到有几个也是用类似的方法,不过缺点是,在win10上,有时不更新,有时是鼠标放在tile上,出现title时才更新。(微软自己做得也不太全面)

赧****月 UID.1258880
2015-12-15 回复

好吧,这个解法也很玄幻

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报