并行AsyncTasks使华为手机崩溃

时间:2015-02-09 14:29:54

标签: android android-asynctask

我有一个包含ListView的Fragment,其项目由一些文本和一个图像组成。使用AsyncTask从我的服务器异步下载每个映像。由于完成这些任务的顺序无关紧要,我最近使用executeOnExecutor()方法并将THREAD_POOL_EXECUTOR作为参数,将它们设置为并行工作。任务在附加到列表的getView()的{​​{1}}方法内启动。

我在LG,三星和HTC手机上进行了测试,所有这些都能够顺畅,超快地运行,但奇怪的是,在华为手机上,这项新功能有时会在执行任务时使手机崩溃。它看起来不像是“正常”崩溃,因为应用程序只是退出而没有任何错误对话框(没有像“不幸的是,xxx已停止”)。

这在我的手机上没有发生(这基本上是一个生活在远方的朋友的错误报告)所以我不能只在我的电脑上调试它,看看会发生什么。我已经在我的应用程序中设置了BaseAdapter,因此每次在任何手机上崩溃我都会将异常日志发送到我的服务器,但是在这种情况下不会发送异常日志。在发送日志消息之前,应用程序似乎因某种原因而死亡。我考虑过内存问题,但有问题的手机有2GB内存,工作量不是很大(同时最多3或4个异步)。当我使用ExceptionHandler命令串行启动AsyncTasks时,一切正常。

我会发布一些代码,但我不知道哪个部分会有用,它们都是相对标准的。我这里的子弹用完了,在这种情况下我该怎么办?你知道华为特有的这类漏洞吗?

编辑:我在AsyncTasks中执行的唯一潜在的“危险”操作是从字节数组中进行图像解码,这可能会导致内存异常。但是我以标准方式处理它以避免后台任务中的内存问题:

execute()

所以我仍然不明白为什么会这样,为什么只能在一部手机上。

0 个答案:

没有答案