0
我使用的后台任务为无效。这项任务工作正常,但会在某些时候强行关闭。我有测试应用程序,并保持打开整个下午,如果我删除了代码中的后台任务,崩溃没有发生。Xamarin的iOS:BackgroundTask,我是否需要设定任务目标
后,我仔细地看了看,大概缺少一行代码分配任务的对象无效。
var siteId = Settings.CurrentSiteId;
if (siteId > 0 && !(new EntityBLL().IsInitial(siteId)))
{
var task = nint.MinValue;
task = UIApplication.SharedApplication.BeginBackgroundTask("bgEntityDownload",() =>
{
ServerEntity.TerminateAutoDownload(true);
UIApplication.SharedApplication.EndBackgroundTask(task);
task = UIApplication.BackgroundTaskInvalid;
completionHandler?.Invoke(UIBackgroundFetchResult.NewData);
});
AppLogger.Instance.AddLog(AppLogLevel.Information,
nameof(TimerDownload),
nameof(DownloadEntityFromServer),
"Background download starts", "");
var result = await ServerEntity.AutoDownload(siteId);
UIApplication.SharedApplication.EndBackgroundTask(task);
task = UIApplication.BackgroundTaskInvalid;
completionHandler?.Invoke(UIBackgroundFetchResult.NewData);
}
的这里行:
var result = await ServerEntity.AutoDownload(siteId);
UIApplication.SharedApplication.EndBackgroundTask(task);
task = UIApplication.BackgroundTaskInvalid;
是与任务线= UIApplicaition.BackgroundTaskInvalid完成工作后需要。
它不是“必需的”。您可以将该值用作标记,以便在代码中的其他位置知道后台任务已结束。在Xcode下运行时,您有无限的后台执行时间。正常运行时,应用程序在终止之前只有180秒的时间。 – Paulw11