0

如果通过 2g 网络同时下载,我的 downloadFile AsyncTask 可能需要相当长的时间。我怀疑它被杀死了,但我不确定。

我的问题是:asynctask 的超时时间是多少,当 android 杀死我的任务时会调用什么函数?如果抛出异常,在哪里捕获它?

4

1 回答 1

0

Android 不应该扼杀你的任务。AsyncTask 就是这样,异步的,所以 Android 不会为它抛出 ANR。

如果您想在 doInBackground 中测试异常,请将您的代码包装在相关的 try catch 块中,然后在出现异常时抛出或处理异常。

您可以取消 AsyncTask,但您必须在任务中以相关间隔检查isCancelled标志。

一旦你取消了任务,onPostExecute()将不会被调用。

当然可以在这里进一步阅读:http: //developer.android.com/reference/android/os/AsyncTask.html

补充:请注意,也许重要的是,Android Ice Cream Sandwich 和 Honeycomb 不再将线程池执行作为默认值,而是使用序列化方法。如果您在 ICS 上发现您的任务似乎永远不会被执行,或者在很长一段时间后执行,您应该执行 usingexecuteOnExecutor()并将THREAD_POOL_EXECUTOR参数传递给它。更多信息可在上面的链接中找到。

于 2012-07-02T13:51:43.287 回答