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