Windows Phone 8.1中的应用程序在后台应用时的Toast通知

时间:2015-02-09 12:53:44

标签: windows windows-phone-8 windows-phone-8.1 toast

我想在我的应用处于后台时向操作中心发送Toast通知。所以我设置了一个Timer,当我从应用程序启动计时器时,10秒后它会产生一个Toast通知。现在,当我在调试器中尝试它时,即使我按下主页按钮或者如果我使用调试器暂停选项暂停应用程序,也会生成吐司。但是当我部署应用程序时,当我启动计时器并单击主页按钮时,它不会生成吐司。任何人都可以为此建议解决方案..?

添加代码

    private Timer stateTimer;
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        TimerCallback timerDelegate = new TimerCallback(timer_Tick);
        TimeSpan delayTime = new TimeSpan(0, 0, 10);
        AutoResetEvent autoEvent = new AutoResetEvent(false);
        TimeSpan intervalTime = new TimeSpan(0, 0, 0, 0, 0);
        Timer notification_timer = new Timer(timerDelegate, autoEvent,   delayTime, intervalTime);
    }

    private void timer_Tick(object state)
    {
        ToastTemplateType toastTemplate = ToastTemplateType.ToastText02;
        XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);

        XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
        toastTextElements[0].AppendChild(toastXml.CreateTextNode("Download has complete"));
        toastTextElements[1].AppendChild(toastXml.CreateTextNode("Download has complete"));

        IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
        ((XmlElement)toastNode).SetAttribute("duration", "long");

        ((XmlElement)toastNode).SetAttribute("launch", "{\"type\":\"toast\",\"param1\":\"12345\",\"param2\":\"67890\"}");
        ToastNotification toast = new ToastNotification(toastXml);
        ToastNotificationManager.CreateToastNotifier().Show(toast);
    }

1 个答案:

答案 0 :(得分:1)

当您正在调试时,在从Visual Studio中的生命周期事件中明确选择暂停之前,您的应用永远不会被暂停。因此,当您按下主页按钮时,您的应用程序实际上会继续运行。

在实际设备上运行没有附加调试器的应用程序时,情况并非如此。一旦你点击主页按钮,你的应用程序就会被暂停,直到它恢复后才会运行。

您必须使用后台任务在后台执行代码。