我在做一款播放器软件 想要实现下载MP3的功能可以将MP3文件下载到SD卡上,而且下载的时候可以跳转到别的页面,而下载仍然继续。用AsyncTask可以做么?如果不能请各位大神给出一个合理的方案。

解决方案 »

  1.   

    开发服务就行了,可以不受activity切换限制的,当然从2.3开始多出了一个类,你可以看下 DownloadManager下载管理类2.3新增API介绍
      

  2.   

    几种方法都可以啊!!可以实现一个Thread的继承类,下载时开启一个新的线程,后台下载!!还可以实现一个Service的继承类,开启一个Service,后台下载!!都可以是实现的!!!
      

  3.   

      /*取得远程文件*/ 
      private void getDataSource(String strPath) throws Exception 
      { 
        if (!URLUtil.isNetworkUrl(strPath)) 
        { 
          mTextView01.setText("错误的URL"); 
        } 
        else 
        { 
          /*取得URL*/
          URL myURL = new URL(strPath);
          /*创建连接*/
          URLConnection conn = myURL.openConnection();
          conn.connect();
          /*InputStream 下载文件*/
          InputStream is = conn.getInputStream();
          if (is == null) 
          { 
            throw new RuntimeException("stream is null"); 
          } 
          /*创建临时文件*/ 
          File myTempFile = File.createTempFile(fileNa, "."+fileEx);
          /*取得站存盘案路径*/
          currentTempFilePath = myTempFile.getAbsolutePath();
          /*将文件写入暂存盘*/ 
          FileOutputStream fos = new FileOutputStream(myTempFile);
          byte buf[] = new byte[128];
          do
          {
            int numread = is.read(buf);
            if (numread <= 0)
            {
              break;
            }
            fos.write(buf, 0, numread);
          }while (true);
          
          /*打开文件进行安装*/
          openFile(myTempFile);
          try 
          { 
            is.close(); 
          } 
          catch (Exception ex) 
          { 
            Log.e(TAG, "error: " + ex.getMessage(), ex); 
          } 
        }
      }
      

  4.   

    继续service
    在service里面开个子线程。然后把这代码放进去就可以了
      

  5.   

    最好用Service实现,AsyncTask会受到activity destory的影响.以下是service的用法
    http://blog.csdn.net/Android_Tutor/archive/2010/08/04/5789203.aspx
      

  6.   

    我新开了一个Thread来进行下载的,在这个下载的Activity上当我按键盘上得返回键的时候,当前Activity被销毁了,但是此时我看DDMS下得SD下得那个文件还继续在下载,但是我再次进入下载Activity的时候下载的进度条没有实时更新! 所以我觉得应该下载的代码写在服务中。 不管你Activity有没有销毁。 只要你再次进入下载的Activity的时候。数据是实时更新的! 用服务!