Android DownloadManager-理解错误\u HTTP\u数据\u错误
我的应用程序严重依赖安卓Android DownloadManager-理解错误\u HTTP\u数据\u错误,android,android-download-manager,http-error,Android,Android Download Manager,Http Error,我的应用程序严重依赖安卓DownloadManager组件来下载大约3-10兆字节大小的文件 当扩展到(数百万次下载)时,大局是清楚的: ~50%的下载由于以下原因而失败 我从google analytics获得这些信息 根据文档,此错误代码表示: 在HTTP级别接收或处理数据时发生错误时列_REASON的值 我发现该文档的信息量不大。 存在大量http错误 在下载过程中,网络断开如何?在下载的管理器重试尝试失败后,它是否也会触发错误\u HTTP\u DATA\u错误错误 如果有人能帮助我了解
DownloadManager
组件来下载大约3-10兆字节大小的文件
当扩展到(数百万次下载)时,大局是清楚的:
~50%的下载由于以下原因而失败
我从google analytics获得这些信息
根据文档,此错误代码表示:
在HTTP级别接收或处理数据时发生错误时列_REASON的值
我发现该文档的信息量不大。存在大量http错误 在下载过程中,网络断开如何?在下载的管理器重试尝试失败后,它是否也会触发
错误\u HTTP\u DATA\u错误
错误
如果有人能帮助我了解:
- 有没有办法从DownloadManager获取有关确切http错误的更多信息
- 下载管理器可以触发的最常见情况是什么
"408" ; Section 10.4.9: Request Time-out
在所有下载的管理器重试尝试失败后,它是否也会触发错误\u HTTP\u DATA\u错误
可能吧。若要抛出此类错误,应用程序与网站通信和/或尝试和/或完成下载时需要出现问题
有没有办法从DownloadManager获得有关确切http错误的更多信息
除了在应用程序使用DownloadManager
的相关方法中使用try-and-catch并记录错误,然后在出现此错误时测试并等待logcat之外,另一个选项是远程使用库或第三方工具获取已部署应用程序的远程错误记录和崩溃报告
有很多第三方服务和图书馆提供这种服务,我以一个著名的开源图书馆为例
至于在线错误和崩溃日志,它是开源的,并提供此功能。过去,谷歌使用谷歌产品免费存储报告,但随着使用量的增加,谷歌已经撤销了这一支持,但ACRA和其他提供商提供了一些功能,或者您可以管理自己的报告,但这可能会产生成本
在应用程序代码中实现这一点相对简单,方法是创建一个类,该类通过扩展应用程序类钩住应用程序,并随应用程序一起启动
import org.acra.*;
import org.acra.annotation.*;
@ReportsCrashes(
formUri = "http://www.backendofyourchoice.com/reportpath"
)
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// The following line triggers the initialization of ACRA
ACRA.init(this);
}
}
您还需要设置后端报告,并且随着选项的增加,提供了有关如何执行此操作的详细信息。更多细节可在此处找到
Cheese Factory的这篇博客详细介绍了在线错误报告的设置和其他选项
这意味着要更新你的应用程序,但无论如何你都必须从声音上做到这一点。很难确切地说出你出现错误的原因。您收到的错误代码太笼统 为解决问题,我将采取以下措施:
错误\u HTTP\u数据\u错误
由方法getErrorCode(int)
返回,这是确切的一行:
case Downloads.Impl.STATUS_HTTP_DATA_ERROR:
return ERROR_HTTP_DATA_ERROR;
android.provider.Downloads
的状态在这里用DownloadManager
类自身的常量屏蔽,在其:
现在,您必须找出导致HTTP错误的原因495
。在谷歌搜索了一段时间后,我发现这个错误响应代码只与谷歌有关,通常是在从playstore下载应用程序时产生的
A至进入设置-应用程序-全部-下载管理器并清除数据。
因此,在我有限的研究结论中,我认为这是一个潜在的DownloadManager
实现相关问题,而不是一些网络或服务器问题,并且由于没有明确的解决方案/解决方法可用(我的朋友也面临类似的情况)
public static final int STATUS_HTTP_DATA_ERROR = 495;