在我的应用程序中,我使用AsyncTask来加载文本和图像,而不是更少。现在有时它会在一秒钟内完成加载,其他时间可能需要大约5分钟。我之所以使用AsyncTask,只是因为有很多关于我的情况的信息。
现在我假设加载速度越来越慢的原因必须与我的互联网有关。但是我在android文档中遇到了这句话:
AsyncTask旨在成为Thread和Handler的辅助类,并不构成通用的线程框架。理想情况下,AsyncTasks应该用于短操作(最多几秒钟。)
我正在使用它吗?如果不是我应该使用什么,有什么是有用的文章。我一直在谷歌搜索网络最佳实践,但我没有找到一些详细的文档解释所有选项以及何时使用它们等。
我使用的教程示例:http://android-developers.blogspot.nl/2010/07/multithreading-for-performance.html
答案 0 :(得分:0)
确实AsyncTask
并非设计用于5分钟的执行时间,但查看链接到它的教程似乎没有为HTTP连接设置超时值。
URL url = new URL("http://tpbapp.com");
connection.setConnectTimeout(1000); // 1 sec timeout to open the connection
connection.setReadTimeout(3000); // 3 sec timeout to load the data
您当然可以根据数据的大致大小调整这些值,但我发现将图像的连接超时设置为大于1秒可能会影响取消AsyncTask
的效果。我写了blog post这个(滚动到底部)。