【问题标题】:ConnectionRequest pause() and resume()ConnectionRequest pause() 和 resume()
【发布时间】:2020-05-30 20:13:19
【问题描述】:

ConnectionRequest 方法名为 pause()resume() 真的实现了吗?

查看来源,我认为它们是“假的”,从某种意义上说,它们实际上什么都不做,除了设置一个内部标志: https://github.com/codenameone/CodenameOne/blob/master/CodenameOne/src/com/codename1/io/ConnectionRequest.java

所以,我的问题是,Codename One 是否提供任何方式来暂停然后恢复大型下载(例如 10MB 或 100MB,这可能是视频的大小)。我的想法是在应用程序进入后台时暂停下载,然后在应用程序返回前台时恢复下载,无需重新下载已下载的数据:这可以规避我之前的问题中描述的问题:How to improve the behavior of ConnectionRequest?

谢谢

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    看起来它们已实现,但请注意您需要覆盖 isPausable() 以返回 true,而目前没有 ConnectionRequest 这样做。

    setDefaultPausable(boolean) 方法添加到ConnectionRequest 可能是有意义的,以使这种用法更容易和更通用,例如使用Rest API。

    【讨论】:

    • 不幸的是,isPausable() 的覆盖无效:pause()resume() 方法在将文件下载到存储时不起作用(在模拟器、Android 和 iOS 上测试)。
    • 查看代号一来源,似乎currentRequest.isPausable()仅被NetWorkManager使用,当设置了优先级ConnectionRequest.PRIORITY_CRITICAL时(我参考github.com/codenameone/CodenameOne/blob/master/CodenameOne/src/…的第842行) .因此,开发人员并不打算使用它来暂停和恢复部分下载。如果我理解正确的话,它是用于不同的内部用途。
    • 这是为了在添加关键请求时调用pause。你是对的,它不需要暂停。但是使用 pause() / resume() 应该可以工作,因为它们使用类似的 API 来杀死。
    猜你喜欢
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多