【问题标题】:windows phone 8 - 50 alarm limitationwindows phone 8 - 50 报警限制
【发布时间】:2014-08-20 11:19:28
【问题描述】:

我正在 windows mobile phone v8 中开发一个应用程序。它需要添加 60 个警报(每天 2 个警报),但 msdn article 中描述的警报限制为 50 个 单击按钮时,我必须在循环中创建所有 60 个警报,或者我可以添加 10 个警报,并且可以在最后一个警报开始或结束时再添加 10 个。我已经搜索但没有找到任何解决方案。 当警报对话框打开或警报开始时是否有任何事件,也许我可以检查警报是否是最后一个,然后我可以再添加 10 个警报并删除或替换以前的警报。有什么建议 ? 这是我的代码

QList 的值取自数据库

for (int i = 0; i < QList.Count; i++)
           {
               //double seconds = 60.0 * (double)i;
               string alarmName = "Sehar Alert " + i.ToString();
               Alarm alarm = new Alarm(alarmName);
               alarm.Content = "Its Sehar time in " + Cityname + " City. " + i.ToString();


               var reminder = ScheduledActionService.Find(alarmName);


               if (reminder != null)
               {
                   ScheduledActionService.Remove(alarmName);
               }
               string datetime = QList[i].date +" "+ QList[i].Sehar;
               DateTime sherTime = Convert.ToDateTime(datetime);
               if (sherTime > sherT)
               {

                   // DateTime seharTime = new DateTime(2014, 6, 10, 10, 12, 0);
                   alarm.BeginTime = sherTime;// DateTime.Now.AddSeconds(seconds);
                   alarm.Sound = new Uri("Assets/Sounds/azan1.mp3", UriKind.Relative);
                   //  alarm.ExpirationTime = alarm.BeginTime.AddSeconds(10.0);

                   alarm.RecurrenceType = RecurrenceInterval.None;

                   ScheduledActionService.Add(alarm);
               }
               // Aftar time in Different City
               string IftarName = "Iftar Alert " + i.ToString();
               Alarm Ifatealarm = new Alarm(IftarName);
               Ifatealarm.Content = "Its Aftar time in " + Cityname + " City. " + i.ToString();


               var Iftarreminder = ScheduledActionService.Find(IftarName);


               if (Iftarreminder != null)
               {
                   ScheduledActionService.Remove(IftarName);
               }
               string Iftardatetime = QList[i].date + " " + QList[i].Iftar;
               DateTime IfTarTime = Convert.ToDateTime(Iftardatetime);
               if (IfTarTime > sherT)
               {


                   // DateTime seharTime = new DateTime(2014, 6, 10, 10, 12, 0);
                   Ifatealarm.BeginTime = sherTime;// DateTime.Now.AddSeconds(seconds);
                   Ifatealarm.Sound = new Uri("Assets/Sounds/azan1.mp3", UriKind.Relative);
                   //  alarm.ExpirationTime = alarm.BeginTime.AddSeconds(10.0);

                   Ifatealarm.RecurrenceType = RecurrenceInterval.None;

                   ScheduledActionService.Add(Ifatealarm);
               }

           }

【问题讨论】:

    标签: c# windows-phone-8 scheduled-tasks alarm


    【解决方案1】:

    在您的App.Xaml.cs 中,您可以订阅您的RootFrame 的ObscuredUnobscured 事件。

     RootFrame.Obscured += new EventHandler<ObscuredEventArgs>(RootFrame_Obscured);
        RootFrame.Unobscured += new EventHandler(RootFrame_Unobscured);
    

    当警报弹出时,RootFrame_Unobscured 将被触发;关闭它后,RootFrame_Obscured 将被解雇。

    【讨论】:

    • iam 对 windows phone 来说有点新,你能提供更多详细信息吗? rootframe.obscured + =..... 代码
    • 转到 Application 对象的构造函数。即 public App() n 代码如下:public App() { RootFrame.Obscured += RootFrame_Obscured; RootFrame.Unobscured += RootFrame_Unobscured; }
    • 我已添加此代码,但未触发 RootFrame_Unobscured 断点
    • 它应该会触发。在这里查看更多参考msdn.microsoft.com/en-us/library/windowsphone/develop/…
    • 我认为只有在应用程序打开时才会触发。