我的Android应用程序提供三种不同形式的数据传输:
这些传输是使用AsyncTask的扩展子类进行的,它们运行得非常好,当然对于步骤1和2.问题在于步骤3.
如果设备使用WiFi,3G或其他合理快速的连接,AsyncTask将不会超时并且远程文件会及时下载。如果设备处于2G或慢连接状态,它将超时 - 即使下载仍在进行(尽管速度很慢)。
理想情况下,我希望每隔一段时间监视一次下载进度,并重置AsyncTask的内部超时计数器,或者如果上次检查后已取得进展,则阻止该任务取消。不幸的是,这两个选项似乎都需要对AsyncTask的私有超时变量进行读或写访问。
当下载进度仍在继续时,如何防止AsyncTask超时?
编辑:我刚刚注意到StackOverflow为我提供了Android下载管理器的标记。这是ADM专为此而设计的吗?
答案 0 :(得分:0)
我将在这里回答我自己的问题,或者至少是编辑,说我最终实施了Android DownloadManager
,以确保后续下载能够以任何速度继续下载允许连接。然后我实现了一个Manifest声明的Receiver,它启动了一个Service来将响应插入到数据库中。最后,通过工具栏通知用户下载已完成,并且他们可以返回应用程序以查看结果。
但是,我不会接受我自己的答案:-)因为我还没有回答是否有可能以我问的方式停止AsyncTask超时。但我发现的一切都表明答案是“没有”。