问题
I am having a difficult time finding documentation on background tasks support for Xamarin.Forms. Does Xamarin.Forms provide support for periodic background tasks?
I need to implement this for both Windows Phone 10 and Android.
回答1:
XF has no implementation for background tasks. You will need to implement these natively. Below are examples on how to do it for each type of project.
UWP
https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BackgroundTask
Android https://developer.xamarin.com/guides/android/application_fundamentals/backgrounding/part_2_android_services/
WinRT
https://visualstudiomagazine.com/articles/2013/05/01/background-tasks-in-windows-store-apps.aspx
iOS
Just for those that want iOS as well. https://developer.xamarin.com/guides/ios/application_fundamentals/backgrounding/part_3_ios_backgrounding_techniques/
Xamarin.Forms
Going into more detail for each section is https://xamarinhelp.com/xamarin-background-tasks/
回答2:
Yeas, but it depends what you need to do.
You can for example use System.Threading.Timer (.net class) is Activity/Service
private System.Threading.Timer timer;
In Activity OnCreate
TimeSpan timerTime = new TimeSpan(0, 0, 0, 0, 1000);
timer = new System.Threading.Timer(new System.Threading.TimerCallback(OnTimerFired), null, timerTime, timerTime);
In Activity OnDestroy
if (timer != null)
{
timer.Change(System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite);
timer.Dispose();
timer = null;
}
private void OnTimerFired(object state)
{
Do some periodic job
}
回答3:
I use Xamarin.Forms.Device.StartTimer Method, it starts a recurring timer using the device clock capabilities. While the callback returns true, the timer will keep recurring.
http://developer.xamarin.com/api/member/Xamarin.Forms.Device.StartTimer/
来源:https://stackoverflow.com/questions/34923444/does-xamarin-forms-support-periodic-background-tasks