1

我有这个用于创建辅助磁贴的代码:

var logo = new Uri( "ms-appx:///Assets/Square150x150Logo.png" );
var tile = new SecondaryTile( "TileID", "Tile Text", "ActivateChange", logo, TileSize.Default );
await tile.RequestCreateAsync();

然后我在我的应用程序的 OnLaunched(LaunchActivatedEventArgs args) 中有代码,用于检查应用程序是否使用“ActivateChange”参数启动:

protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
    if (!string.IsNullOrEmpty(args.Arguments) && args.Arguments == "ActivateChange")
    {
        //Doing some work
        this.Exit();
        return;
    }
...

问题是,当我单击辅助磁贴时,会出现初始屏幕,在它消失后它会执行我的一些工作,然后它会退出应用程序。

我想要它做的是,当我点击辅助磁贴时,它会触发一些与我的应用程序关联的后台任务,这个后台任务将完成我的一些工作,然后将其状态更改为睡眠或退出。我不知道他们是如何工作的。我只知道我可以拥有一直在运行并在某个时间定期触发的后台任务。但是我可以让后台任务以某种方式处于休眠状态并且可以从辅助磁贴触发吗?

谢谢!

4

1 回答 1

0

动态磁贴仅用于启动应用程序。主磁贴和辅助磁贴之间的唯一区别是辅助磁贴可以将额外的启动参数传递给应用程序,而您已经在利用它。

在我看来,无论如何,如果用户点击磁贴时似乎什么也没发生,这对用户来说将是一种奇怪的体验。好吧,即使在单击辅助磁贴时让应用程序自动退出(就像您现在所做的那样)也是一种奇怪的行为,类似于应用程序崩溃,除非用户知道得更好。

在不知道您要达到的目标的情况下,很难提出合适的替代方案。无法通过应用程序外部的用户操作触发后台任务。您可以在应用程序内使用ApplicationTrigger而不是直接执行该工作,这样您就可以更快地关闭应用程序。您还可以查看可用触发器的完整列表Trigger- 它是链接页面上以结尾的所有类。也许那里有一个更适合你。

于 2016-02-21T12:39:10.143 回答