Android下载功能,需要考虑异步加载, 此文章中使用的是在后台开启一个服务(A) ,服务中开启一个线程去进行下载.
考虑到MVP模式的广泛使用,现在Android开发越来越趋向于接口编程. 所以利用接口(B) 方法来进行相关的反馈.通过这些反馈发起广播,在UI界面端通过接收广播(C) ,来发送UI更新的消息.UI界面中通过处理消息 (D) 来进行界面更新.
下面是服务(A) 中主要代码:
private void startDownload() {
if (flag == Flag_Init || flag == Flag_Pause) {
if (mThread != null && !mThread.isAlive()) {
mThread = new DownThread();
}
mThread.start();
}
}
下面为接口(B) 中主要代码,此接口在服务(A)中作为内部类, 在MVP模式实体类中将会使用到这个接口实现类
private DownloadListener downListener = new DownloadListener() {
int fileSize;
Intent intent = new Intent();
@Override
public void onSuccess(File file) {
intent.setAction(MainActivity.ACTION_DOWNLOAD_SUCCESS);
intent.putExtra("progress", 100);
intent.putExtra("file", file);
sendBroadcast(intent);
}
@Override
public void onStart(int fileByteSize) {
fileSize = fileByteSize;
flag = Flag_Down;
}
}
由于时间原因,待续