首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android中的多线程下载

Android中的多线程下载
EN

Stack Overflow用户
提问于 2011-08-06 10:31:23
回答 2查看 1.6K关注 0票数 3

我已经测试了一些关于如何加速多次下载的方法。

此表显示了使用单个线程或每次下载的新线程通过不同网络从2到10张图像下载(使用三星Galaxy S1)的速度。

代码语言:javascript
复制
        Multithread     SingleThread    
Images  Wifi    3g      Wifi    3g
   2    1,1     6,6     2,0     6,7
   4    1,7     8,0     5,2     9,6
   6    2,1     6,1     7,5     15,5
   8    2,3     7,1     10,2    20,0
   10   2,3     12,5    13,5    26,7

这些结果表明,多线程下载可以大大加速任务的执行。

然后我尝试了相同的代码,但是使用HTC Wildfire,当线程下载的数量很高时,UI线程运行的流畅性要低得多。

我添加了启动每个低优先级线程的代码:

代码语言:javascript
复制
Thread t= new Thread{
       public void run(){
          download(image[i]);
       }
t.setPriority(Thread.MIN_PRIORITY)
t.start

但问题依然存在。有没有办法让这些线程不会对UI线程产生太大的影响?如果不是,我如何检测线程的数量并使其适应运行应用程序的设备?

谢谢

注意:这十个图像有不同的大小,所以没有必要逐列读表

EN

回答 2

Stack Overflow用户

发布于 2011-08-06 11:35:45

在三星手机中,由于某些原因,线程与UI线程竞争资源。尝试将线程优先级设置为background...this将确保线程不会与UI线程竞争,好消息是它将跨所有异步任务工作。查看devices..If的源代码,他们会将线程优先级设置为上面提到的值

票数 2
EN

Stack Overflow用户

发布于 2011-08-06 11:53:34

对于下载,请始终使用AsyncTask,它可以执行此操作(如果需要,还可以让您轻松发布下载完成)。此外,就UI感觉不流畅而言,除了线程之外,还有许多其他因素也会导致这种情况。使用DDMS运行您的代码,并验证如果您的测试正在进行其他任何操作,您不会导致GC不断触发。

根据我的经验,在Android上设置线程优先级对于通过降低线程优先级来获得更好的性能来说,结果好坏参半。异步任务似乎更一致地做到了这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6964380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档