要从FTP上面下载一个1KB-2G(姑且2G吧)的文件,要下载且耗时,肯定想到用AsyncTask或线程+Handler来下载。(两种方法我都试了)
结果是,下载100MB内的文件,很快就下载完了,UI操作也不卡。但是,当我下载1G的文件时,UI就“死”在那里了。
while((c = in.read(bytes)) != -1)
{
out.write(bytes, 0, c);
localSize += c;
try 
{
Thread.sleep(100);

catch (InterruptedException e) 
{
e.printStackTrace();
}
System.out.println("localSize>>>> "+localSize);

}
out.flush();

解决方案 »

  1.   

    去掉log试试  你每读几个字节(bytes的长度多少)  就打log  这个是io操作啊
      

  2.   


    byte[] bytes = new byte[2048];
    while((c = in.read(bytes)) != -1)
    {
    out.write(bytes, 0, c);
    localSize += c;

    }
    out.flush();修改成上面那样,还是一样的
      

  3.   


    byte[] bytes = new byte[2048];
    while((c = in.read(bytes)) != -1)
    {
    out.write(bytes, 0, c);
    localSize += c;

    }
    out.flush();修改成上面那样,还是一样的
    额  表示无能为力了  没遇到android终端下载这么大文件的  
      

  4.   


    byte[] bytes = new byte[2048];
    while((c = in.read(bytes)) != -1)
    {
    out.write(bytes, 0, c);
    localSize += c;

    }
    out.flush();修改成上面那样,还是一样的
    额  表示无能为力了  没遇到android终端下载这么大文件的  
    android手机一样可以下载高清电影,只是国内环境...
    个人推测应该是本人代码的问题,还在继续找原因...