我的downloadFile AsyncTask可能需要相当长的时间才能在2g网络上进行并发下载。我怀疑它被杀了,但我不确定。
我的问题是:asynctask的超时是什么,当android杀死我的任务时调用了什么函数?如果抛出异常,在哪里捕获它?
答案 0 :(得分:0)
Android不应该杀死你的任务。 AsyncTask就是Asynchronous,所以Android不会为它抛出ANR。
如果要在doInBackground中测试异常,请将代码包装在相关的try catch块中,然后在出现异常时抛出或处理异常。
您可以取消AsyncTask,但必须在任务中的相关间隔检查isCancelled
标记。
取消任务后,将不会调用onPostExecute()
。
当然可以在此处进一步阅读:http://developer.android.com/reference/android/os/AsyncTask.html
此外:
请注意,也许重要的是Android Ice Cream Sandwich,也许Honeycomb从默认情况下转移到线程池执行,而是使用序列化方法。如果您在ICS上发现您的任务似乎永远不会被执行,或者在重大等待后执行,您应该使用executeOnExecutor()
执行并传递THREAD_POOL_EXECUTOR
参数。有关更多信息,请访问以上链接。