我正在使用Xamarin.iOS并实施Downloadmanager。Xamarin.iOS下载管理器
我发现了一个关于如何在swift中实现DownloadManager的教程,由该教程领导,我已经将用swift编写的逻辑转录到C#中。 DownloadManager工作并排队操作并执行它们。我面临的唯一问题是应用程序转换到暂停模式。队列的行为不是那么确定的。有时候,所有排队的操作都会执行,有时应用会停止执行。
使用案例1: 我开始文件同步并锁定iPad。大部分时间排队的操作被执行。但有时当我解锁iPad时,应用程序将发送到后台,我必须双击主页按钮才能返回到应用程序,在这种情况下,文件同步在执行过程中以某种方式停止。
使用案例2:我开始文件同步并将应用程序发送到后台。像以前的用例一样。有时会执行所有操作,有时操作会停止。
使用案例3:客户开始同步并且在他回来一段时间后,iPad无人照看,同步未完成且应用程序在后台。平均约有70%的同步完成。
对于实现,我使用了“DownloadOperation”作为元素的“NSOperationQueue”。 “DownloadOperation”只是NSOperation对象的包装,其执行设置为“异步”。
可能的问题
- 我不知道会发生什么情况“NSOperationQueue”应用程序改变状态的时候?
- “NSOperationQueue”的用法是“正确”的方式去执行DownloadManager吗?
- 是否有针对“NSOperationQueue”和/或“的NSOperation”
的执行展望讨论的优化任何常见的提示。
P.S.我已启用“背景模式”和“背景获取”
我认为你只需要一个取消触发器,你可以为任务做这件事,不确定关于NSOperationQueues。如果可以实现cancallation触发器,您将知道操作是否停止,以及应用程序重新加载的时间是否能够相应处理。 – Digitalsa1nt
@ Digitalsa1nt我不想取消操作,我希望它们在应用程序终止后继续执行。这就是在NSOperations中使用OperationQueue和NSUrlSession的原因。但是,谢谢你的评论我希望有人对此问题有所了解。 –
在iOS终止您的应用程序后,您无法让代码无限期地运行。或者我应该说这是违反苹果准则的。希望有人会为你找到解决办法。 :) – Digitalsa1nt