我正在开发一个运行UWP的应用程序,我想实时记录用户的位置。我已经阅读了很多线程扔谷歌,并获得了一些解决方案:ExtendedExecutionSession ,app service。但是这两个解决方案存在同样的问题:无法在应用程序暂停时记录位置。我知道uwp中的后台任务,似乎需要一个触发器(例如SystemTrigger)才能启动。当应用程序暂停以跟踪/记录位置时,是否可以启动(不使用触发器但直接调用)自定义后台任务?
答案 0 :(得分:1)
首先,我想回答你的问题:
是否可以启动(不要使用触发器,而是直接调用)a 应用程序暂停以跟踪/记录位置时的自定义后台任务?
是的,您可以使用ApplicationTrigger类执行此操作。见https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.background.applicationtrigger (它仍然是一个触发器,因为API需要它,但它基本上直接从应用程序调用backgroundtask)
但是这里有一些用于进行位置跟踪和这些事情的示例: https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/Geolocation
我认为您正在寻找的是LocationTrigger(参见:https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.background.locationtrigger) 它用于Geofence示例(Scenario5_GeofenceBackgroundTask.xaml.cs)
基本上你这样注册:(来自示例代码)
BackgroundTaskBuilder geofenceTaskBuilder = new BackgroundTaskBuilder();
geofenceTaskBuilder.Name = SampleBackgroundTaskName;
geofenceTaskBuilder.TaskEntryPoint = SampleBackgroundTaskEntryPoint;
var trigger = new LocationTrigger(LocationTriggerType.Geofence);
geofenceTaskBuilder.SetTrigger(trigger);
_geofenceTask = geofenceTaskBuilder.Register();
//...and do the rest (but look into the sample..everything is from there...)