[Fix Skin]

1、修复皮肤包多次下载同一个皮肤导致md5不一样问题
This commit is contained in:
donghongyu-pc
2024-12-24 18:50:48 +08:00
parent 99a93c2f9f
commit b85a55e522
2 changed files with 17 additions and 6 deletions

View File

@@ -58,7 +58,7 @@ MOGO_TELEMATIC_VERSION=1.4.7.59
# v2x
MOGO_V2X_VERSION=1.4.7.59
# SKIN
MOGO_SKIN_VERSION=1.4.7.49.19
MOGO_SKIN_VERSION=1.4.7.50
# SDK
SDK_VERSION=1.4.7.49.18-debug
SDK_NATIVE_VERSION=1.4.7.49.18-debug

View File

@@ -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));
}
};