Mp3Player(10) DownloadService、Service、Runnable
-
//DownloadService.java
-
package com.lwb.mp3player.service;
-
-
import com.lwb.download.HttpDownloader;
-
import com.lwb.model.Mp3Info;
-
-
import android.app.Service;
-
import android.content.Intent;
-
import android.os.IBinder;
-
-
public class DownloadService extends Service{
-
@Override
-
public IBinder onBind(Intent arg0) {
-
return null;
-
}
-
-
/*每次用户点击ListActivity当中的一个条目时,
-
* 就会调用该方法 onStartCommand(Intent,int flags,int startId)
-
* 取出被点击的对象并创建线程进行下载
-
* 1、从intent取出mp3Info内容:mp3Info =(mp3Info)intent.getSerialzableExtra("mp3Info")
-
* 2、创建一个下载线程new DownloadThread(mp3Info);,这个对象是自定义的 传入的是mp3Info内容
-
* 3、创建一个Thread线程对象,传入是的参数是 下载线程对象downloadThread
-
* downloadThread上面虽然实现了Runnable接口,但还是要放到thread中的,记住啦
-
* 4、启动线程thread.start()
-
* */
-
@Override
-
public int onStartCommand(Intent intent, int flags, int startId) {
-
//从intent当中将Mp3Info对象取出
-
Mp3Info mp3Info = (Mp3Info)intent.getSerializableExtra("mp3Info");
-
//生成一个下载线程,并将Mp3Info对象作为参数传递到线程对象当中
-
DownloadThread downloadThread = new DownloadThread(mp3Info);
-
//其中线程
-
Thread thread =new Thread(downloadThread);
-
thread.start();
-
return super.onStartCommand(intent, flags, startId);
-
}
-
-
/*定义一个DownloadThread线程类,实现了Runnable接口,并复写了启动的run()实体
-
* run()实现下载文件的功能
-
* 1、创建httpDownloader对象new HttpDownloader();
-
* 2、调用HttpDownloader对象中的downFile()方法:httpDownloader.downFile(mp3Url,"mp3/",mp3Info.getMp3Name());
-
* 该方法直接把在mp3Url中的文件mp3Info.getMp3Name()下载SD卡中的mp3/目录下
-
* */
-
-
/*在程序开发中只要是多线程肯定永远以实现Runnable接口为主,
-
* 因为实现Runnable接口相比继承Thread类有如下好处:
-
* 避免点继承的局限,一个类可以继承多个接口。
-
* 适合于资源的共享
-
* 详细出处参考:*/
-
class DownloadThread implements Runnable{
-
private Mp3Info mp3Info = null;
-
public DownloadThread(Mp3Info mp3Info){
-
this.mp3Info= mp3Info;
-
}
-
-
@Override
-
public void run() {
-
//下载地址
-
//根据mp3文件的名字,生成下载下载地址
-
String mp3Url = ""+mp3Info.getMp3Name();
-
//生成下载文件所用的对象
-
HttpDownloader httpDownloader = new HttpDownloader();
-
//将文件下载下来,存储在SDCard当中
-
int result = httpDownloader.downFile(mp3Url,"mp3/",mp3Info.getMp3Name());
-
String resultMessage = null;
-
if(result==-1){
-
resultMessage="下载失败";
-
}
-
else if(result ==1){
-
resultMessage ="文件已经存在,不需下载";
-
}
-
else if(result == 0){
-
resultMessage ="文件下载成功";
-
}
-
}
-
}
-
}
阅读(568) | 评论(0) | 转发(0) |