如何实现后台下载功能 我在做一款播放器软件 想要实现下载MP3的功能可以将MP3文件下载到SD卡上,而且下载的时候可以跳转到别的页面,而下载仍然继续。用AsyncTask可以做么?如果不能请各位大神给出一个合理的方案。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 开发服务就行了,可以不受activity切换限制的,当然从2.3开始多出了一个类,你可以看下 DownloadManager下载管理类2.3新增API介绍 几种方法都可以啊!!可以实现一个Thread的继承类,下载时开启一个新的线程,后台下载!!还可以实现一个Service的继承类,开启一个Service,后台下载!!都可以是实现的!!! /*取得远程文件*/ 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); } } } 继续service在service里面开个子线程。然后把这代码放进去就可以了 最好用Service实现,AsyncTask会受到activity destory的影响.以下是service的用法http://blog.csdn.net/Android_Tutor/archive/2010/08/04/5789203.aspx 我新开了一个Thread来进行下载的,在这个下载的Activity上当我按键盘上得返回键的时候,当前Activity被销毁了,但是此时我看DDMS下得SD下得那个文件还继续在下载,但是我再次进入下载Activity的时候下载的进度条没有实时更新! 所以我觉得应该下载的代码写在服务中。 不管你Activity有没有销毁。 只要你再次进入下载的Activity的时候。数据是实时更新的! 用服务! is_device _toro 两个Activity怎么多次回传数据? SAX联网解析xml的问题 ksoap2的问题 在view中如何实现bitmap的旋转? android 创建控件create和findViewById的区别 在JNI里怎么显示surface呢,并播放YUV数据 android是否支持定时启动一个进程? android中使用webview调用银联问题 removeCallbacks之后线程继续执行 Android如何获取系统空闲时间 不小心把R.java删除了,怎么样再自动生成出来
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);
}
}
}
在service里面开个子线程。然后把这代码放进去就可以了
http://blog.csdn.net/Android_Tutor/archive/2010/08/04/5789203.aspx