Witam,
Stworzyłem aplikację, w której wykorzystuję BackgroundTask. W momencie wywołanie metody:
private BackgroundTaskDeferral _deferral;
...
_deferral.Complete();
w klasie, wywołującej BackgroundTask, wywołuje się metoda:
private void OnCompleted(IBackgroundTaskRegistration task, BackgroundTaskCompletedEventArgs args)
{
ScheduleToast("Tresc", 1);
}
Ma ona bardzo proste zadanie. Po zakończeniu działania aplikacji w tle powinna wyświetliść zwykły Toast:
private void ScheduleToast(String content, int secondsToStart)
{
string toastXmlString =
"<toast>"
+ "<visual version='2'>"
+ "<binding template='ToastText02'>"
+ "<text id='1'>" + "MediGuard (ALARM): " + DateTime.Now.ToLocalTime() + "</text>"
+ "<text id='2'>" + content + "</text>"
+ "</binding>"
+ "</visual>"
+ "</toast>";
XmlDocument toastDOM = new XmlDocument();
toastDOM.LoadXml(toastXmlString);
DateTime startTime = DateTime.Now.AddSeconds(secondsToStart);
ScheduledToastNotification newToast = new ScheduledToastNotification(toastDOM, startTime);
newToast.Id = "ALARM_TOAST";
ToastNotificationManager.CreateToastNotifier().AddToSchedule(newToast);
}
Problem tkwi w tym że podczas debugowania aplikacji wszystko działa poprawnie, przełączam sie pomiędzy zadaniami i toast wyświetla sie również prawidłowo, jednak po uruchomieniu zainstalowaniej aplikacji na telefonie bez debugowania nic nie odpowiada. Wiem że aplikacja w tle pracuje jednak wcale nie reaguje. W czym może być problem? Podczas debugowania aby móc wyświetlić Toast muszę przełączyć debugger na stworzony Background Task wówczas on wykonuje dalej swoje działanie i dopiero wtedy wywołuje zdarzenie OnCompleted, czy to może być coś z tym związane?