NSOperationQueue在网络切换时取消当前的NSOperation
NSOperationQueue cancels the current NSOperation when network switched
我正在使用 POST 方法将视频上传到服务器。上传视频放在 NSOperation
的 main()
内。之后它被排队到 NSOperationQueue
。
当网络在 Wi-Fi 和蜂窝数据之间切换时,当前操作失败。
如何处理网络切换NSOperation
失败的问题。
我正在使用 sendSynchronousRequest:
上传视频
我尝试使用 AFNetworking
,但结果还是一样
这里有一些建议。
首先,您需要设置一种机制来了解您何时从 WiFi 切换到蜂窝网络。如果是这样,您需要向操作发送 cancel
消息以取消它。
然后,您需要将您的操作转换为异步操作(覆盖 asynchronous
属性,旧的被命名为 concurrent
)。每次上传一大块数据时,您需要验证操作是否已被取消,检查 isCancelled
属性,并在必要时回滚。
使用同步操作可防止您取消当前的任务 运行。
类似的方法可用于 NSUrlSession
(参见 invalidateAndCancel
方法)。在这种情况下,您可以避免使用操作将上传任务包装在其上。
如果您还需要其他东西,请告诉我。
我正在使用 POST 方法将视频上传到服务器。上传视频放在 NSOperation
的 main()
内。之后它被排队到 NSOperationQueue
。
当网络在 Wi-Fi 和蜂窝数据之间切换时,当前操作失败。
如何处理网络切换NSOperation
失败的问题。
我正在使用 sendSynchronousRequest:
上传视频
我尝试使用 AFNetworking
,但结果还是一样
这里有一些建议。
首先,您需要设置一种机制来了解您何时从 WiFi 切换到蜂窝网络。如果是这样,您需要向操作发送 cancel
消息以取消它。
然后,您需要将您的操作转换为异步操作(覆盖 asynchronous
属性,旧的被命名为 concurrent
)。每次上传一大块数据时,您需要验证操作是否已被取消,检查 isCancelled
属性,并在必要时回滚。
使用同步操作可防止您取消当前的任务 运行。
类似的方法可用于 NSUrlSession
(参见 invalidateAndCancel
方法)。在这种情况下,您可以避免使用操作将上传任务包装在其上。
如果您还需要其他东西,请告诉我。