[Fix Skin]
1、修复皮肤包多次下载同一个皮肤导致md5不一样问题
This commit is contained in:
@@ -31,6 +31,11 @@ public class SkinManager extends Observable {
|
||||
private static Application mApplication;
|
||||
private static SkinManager instance;
|
||||
|
||||
/**
|
||||
* 下载器
|
||||
*/
|
||||
private static DownloadManager mDownloadManager;
|
||||
|
||||
/**
|
||||
* 皮肤加载回调监听
|
||||
*/
|
||||
@@ -159,7 +164,7 @@ public class SkinManager extends Observable {
|
||||
// 获取皮肤插件文件对象
|
||||
File skinFile = skin.getSkinFile(theme);
|
||||
// 判断是否存在
|
||||
if (FileUtils.fileIsExists(theme, skin.getSkinFileName())) {
|
||||
if (FileUtils.fileIsExists(theme, skin.getSkinFileName()) && mDownloadManager == null) {
|
||||
// 检验皮肤包完整性,即MD5是否一致,不一致则删除
|
||||
String localSkinFileMd5 = SkinUtils.getSkinMD5(skinFile);
|
||||
if (!TextUtils.equals(localSkinFileMd5, skin.md5)) {
|
||||
@@ -172,10 +177,13 @@ public class SkinManager extends Observable {
|
||||
}
|
||||
}
|
||||
Log.w(TAG, "皮肤不存在,开始下载……skin=" + skin);
|
||||
DownloadManager manager = getDownloadManager(skin, theme, skinLoadListener);
|
||||
// 启动文件下载
|
||||
manager.startDownload();
|
||||
|
||||
if (mDownloadManager == null) {
|
||||
mDownloadManager = getDownloadManager(skin, theme, skinLoadListener);
|
||||
// 启动文件下载
|
||||
mDownloadManager.startDownload();
|
||||
} else {
|
||||
Log.e(TAG, "当前有皮肤包下载任务进行中,不可重复提交!");
|
||||
}
|
||||
}
|
||||
|
||||
private static DownloadManager getDownloadManager(Skin skin, File themeDirectory, SkinLoadListener skinLoadListener) {
|
||||
@@ -217,6 +225,7 @@ public class SkinManager extends Observable {
|
||||
skinLoadListener.onLoadFailed(e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
mDownloadManager = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -224,6 +233,7 @@ public class SkinManager extends Observable {
|
||||
// 下载失败后的处理
|
||||
Log.e(TAG, "皮肤包下载出错 onDownloadFailed");
|
||||
skinLoadListener.onLoadFailed(e);
|
||||
mDownloadManager = null;
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -231,6 +241,7 @@ public class SkinManager extends Observable {
|
||||
public void onAlreadyDownloading(String url) {
|
||||
// 处理重复下载的情况
|
||||
Log.w(TAG, "皮肤包 onAlreadyDownloading url=" + url);
|
||||
mDownloadManager = null;
|
||||
skinLoadListener.onLoadFailed(new Exception("DownloadManager onAlreadyDownloading url=" + url));
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user