我试图创建一个Windows UAP(C#)来不断在后台任务中记录位置数据,现在我尝试做的只是从地理围栏触发器开始后台任务。 / p>
我已经按照很多指南来了解如何执行此操作,我已将Package.appxmanifest中的入口点添加到" BackgroundTask.LocationBackgroundTask"并选择了位置属性。
然后我使用以下内容注册任务:
public bool IsTaskRegistered()
{
var Registered = false;
var entry = BackgroundTaskRegistration.AllTasks.FirstOrDefault(keyval => keyval.Value.Name == BackgroundTaskName);
if (entry.Value != null)
Registered = true;
return Registered;
}
我使用以下代码验证后台任务是否已注册,并返回true表示任务已注册:
builder.SetTrigger(new SystemTrigger(SystemTriggerType.PowerStateChange, true));
我遇到的问题是后台任务中的Run方法没有被触发。
为了验证后台任务本身是好的,我换出了var data = [{ "avg": 996.8, "sessions": [{ "minTime": 0, "maxTime": 599, "count": 10 }, { "minTime": 600, "maxTime": 1199, "count": 2 }, { "minTime": 1800, "maxTime": 2399, "count": 4 }, { "minTime": 2400, "maxTime": 2999, "count": 3 }], "timestamp": 1449360000 }, { "avg": 986.4, "sessions": [{ "minTime": 0, "maxTime": 599, "count": 12 }, { "minTime": 600, "maxTime": 1199, "count": 1 }, { "minTime": 1200, "maxTime": 1799, "count": 2 }, { "minTime": 1800, "maxTime": 2399, "count": 2 }, { "minTime": 3000, "maxTime": 3599, "count": 3 }], "timestamp": 1449540000 }],
result = data.map(function (a) {
return {
avg: a.avg,
sumcount: a.sessions.reduce(function (s, b) { return s + b.count; }, 0),
timestamp: a.timestamp
};
});
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
的触发器类型(并更新了Package.appxmanifest以获得系统事件属性)。然后,当我从我的笔记本电脑上拔下电源时,我预计会触发后台任务,这很好。
另外需要注意的是,在调试时我没有看到Lifecycle Events下的后台任务,而我在使用SystemTrigger进行测试时也是如此。
因此,问题似乎特定于地理围栏触发。我开始把头发拉出来,所以对任何建议都会感激不尽。