[dev_opt_2.15.0] 优化下载逻辑

This commit is contained in:
renwj
2023-03-07 16:13:20 +08:00
parent 3c58608ca6
commit 908ca545e9
8 changed files with 24 additions and 27 deletions

View File

@@ -44,7 +44,6 @@ class UpgradeManager : IDownload {
} }
private var map: Map<String, String>? = null private var map: Map<String, String>? = null
private var mDownloadFileName: String? = null
private val upgradeProvider: IMoGoUpgradeProvider? by lazy { CallerBase.getApiInstance(IMoGoUpgradeProvider::class.java, MogoServicePaths.PATH_UPGRADE_TYPE_API) } private val upgradeProvider: IMoGoUpgradeProvider? by lazy { CallerBase.getApiInstance(IMoGoUpgradeProvider::class.java, MogoServicePaths.PATH_UPGRADE_TYPE_API) }
@@ -56,9 +55,6 @@ class UpgradeManager : IDownload {
fun downLoadPackage(context: Context, type: DownloadType, downloadKey: String, downloadUrl: String) { fun downLoadPackage(context: Context, type: DownloadType, downloadKey: String, downloadUrl: String) {
CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}", "UpgradeManager downLoadPackage = " + downloadUrl.contains(".zip") + "----downloadKey = $downloadKey ---downloadUrl = $downloadUrl") CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}", "UpgradeManager downLoadPackage = " + downloadUrl.contains(".zip") + "----downloadKey = $downloadKey ---downloadUrl = $downloadUrl")
if (type == OBU) {
mDownloadFileName = downloadKey
}
types[downloadUrl] = type types[downloadUrl] = type
DownloadUtils.downLoad( DownloadUtils.downLoad(
context, context,
@@ -115,7 +111,7 @@ class UpgradeManager : IDownload {
} }
} }
override fun onFinished(downloadUrl: String?, threadBean: ThreadBean?) { override fun onFinished(downloadUrl: String?, threadBean: ThreadBean?, localPath: String) {
if (downloadUrl != null) { if (downloadUrl != null) {
val type = types[downloadUrl] val type = types[downloadUrl]
if (type == APK || type == PATCH) { if (type == APK || type == PATCH) {
@@ -124,7 +120,7 @@ class UpgradeManager : IDownload {
var isPatchInstallFailed = false var isPatchInstallFailed = false
var patchInstallFailedReason = "" var patchInstallFailedReason = ""
CallerPatchManager.removePatchInfoByUrl(downloadUrl) CallerPatchManager.removePatchInfoByUrl(downloadUrl)
val patch = File(Config.downLoadPath, downloadUrl.substring(downloadUrl.lastIndexOf("/") + 1)) val patch = File(localPath)
if (patch.exists()) { if (patch.exists()) {
try { try {
val newApk = File(Utils.getApp().getExternalFilesDir(null), "patch/merged/${SimpleDateFormat("yyyy_MM_dd_HH_mm_ss", Locale.ROOT).format(Date()) }.apk") val newApk = File(Utils.getApp().getExternalFilesDir(null), "patch/merged/${SimpleDateFormat("yyyy_MM_dd_HH_mm_ss", Locale.ROOT).format(Date()) }.apk")
@@ -210,8 +206,7 @@ class UpgradeManager : IDownload {
} }
} }
} else { } else {
val apkPath = Config.downLoadPath + downloadUrl.substring(downloadUrl.lastIndexOf("/") + 1) val apk = File(localPath)
val apk = File(apkPath)
ApkInstaller.installApp(Utils.getApp(), apk) { code, reason -> ApkInstaller.installApp(Utils.getApp(), apk) { code, reason ->
if (code != PackageInstaller.STATUS_SUCCESS) { if (code != PackageInstaller.STATUS_SUCCESS) {
upgradeProvider?.also { itx -> upgradeProvider?.also { itx ->
@@ -231,10 +226,10 @@ class UpgradeManager : IDownload {
} }
if (downloadUrl != null) { if (downloadUrl != null) {
if (map.isNullOrEmpty()) { if (map.isNullOrEmpty()) {
CallerDevaToolsUpgradeListenerManager.invokeUpgradeFinish(downloadUrl) CallerDevaToolsUpgradeListenerManager.invokeUpgradeFinish(downloadUrl, localPath)
} else { } else {
findKey(downloadUrl) { findKey(downloadUrl) {
CallerDevaToolsUpgradeListenerManager.invokeUpgradeFinish(it) CallerDevaToolsUpgradeListenerManager.invokeUpgradeFinish(it, localPath)
} }
} }
} }
@@ -291,7 +286,7 @@ class UpgradeManager : IDownload {
updateStatusBarDownloadView(true, "download", length) updateStatusBarDownloadView(true, "download", length)
} }
override fun onFinished(url: String?) { override fun onFinished(url: String?, localPath: String) {
builder.setContentText("已下载" + 100 + "%") builder.setContentText("已下载" + 100 + "%")
UiThreadHandler.postDelayed({ UiThreadHandler.postDelayed({
manager.cancel(0x3) manager.cancel(0x3)
@@ -316,11 +311,12 @@ class UpgradeManager : IDownload {
override fun onProgress(url: String?, length: Int) { override fun onProgress(url: String?, length: Int) {
} }
override fun onFinished(url: String?) { override fun onFinished(url: String?, localPath: String) {
//下载完成,解压文件 //下载完成,解压文件
try { try {
val files = ZipUtils.unzipFile(Config.downLoadObuPath + mDownloadFileName, Config.downLoadUnzipObuPath) val dest = File(localPath)
CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}", " onFinished file = ${Config.downLoadObuPath + mDownloadFileName} -----files = $files ") val files = ZipUtils.unzipFile(localPath, Config.downLoadUnzipObuPath)
CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}", " onFinished file = ${Config.downLoadObuPath + dest.name} -----files = $files ")
//1传给obu升级,升级成功2需要删除相应文件夹 //1传给obu升级,升级成功2需要删除相应文件夹
var md5Path = "" var md5Path = ""
var tarPath = "" var tarPath = ""

View File

@@ -22,7 +22,7 @@ interface IMogoDevaToolsUpgradeListener {
/** /**
* 线程下载完毕 * 线程下载完毕
*/ */
fun onFinished(url: String?) fun onFinished(url: String?, localPath: String)
/** /**
* 错误信息回调 * 错误信息回调

View File

@@ -27,10 +27,10 @@ object CallerDevaToolsUpgradeListenerManager : CallerBase<IMogoDevaToolsUpgrade
} }
} }
fun invokeUpgradeFinish(url: String) { fun invokeUpgradeFinish(url: String, destLocalPath: String) {
M_LISTENERS.forEach { M_LISTENERS.forEach {
val listener = it.value val listener = it.value
listener.onFinished(url) listener.onFinished(url, destLocalPath)
} }
} }

View File

@@ -26,7 +26,9 @@ public interface DownloadCallBack {
/** /**
* 线程下载完毕 * 线程下载完毕
*
* @param threadBean * @param threadBean
* @param localPath
*/ */
void threadDownLoadFinished(String url,ThreadBean threadBean); void threadDownLoadFinished(String url, ThreadBean threadBean, String localPath);
} }

View File

@@ -27,8 +27,9 @@ public interface IDownload {
* 线程下载完毕 * 线程下载完毕
* *
* @param threadBean * @param threadBean
* @param localPath
*/ */
void onFinished(String url,ThreadBean threadBean); void onFinished(String url, ThreadBean threadBean, String localPath);
/** /**
* 错误信息回调 * 错误信息回调

View File

@@ -154,10 +154,10 @@ public class DownloadService implements InitThread.InitCallBack, DownloadCallBac
} }
@Override @Override
public void threadDownLoadFinished(String url, ThreadBean threadBean) { public void threadDownLoadFinished(String url, ThreadBean threadBean, String localPath) {
IDownload iDownload = callBacks.get(url); IDownload iDownload = callBacks.get(url);
if (iDownload != null) { if (iDownload != null) {
iDownload.onFinished(url, threadBean); iDownload.onFinished(url, threadBean, localPath);
} }
} }

View File

@@ -134,7 +134,7 @@ public class DownloadTask implements DownloadCallBack {
} }
@Override @Override
public synchronized void threadDownLoadFinished(String url, ThreadBean threadBean) { public synchronized void threadDownLoadFinished(String url, ThreadBean threadBean, String localPath) {
for (ThreadBean bean : threads) { for (ThreadBean bean : threads) {
if (bean.getId() == threadBean.getId()) { if (bean.getId() == threadBean.getId()) {
//从列表中将已下载完成的线程信息移除 //从列表中将已下载完成的线程信息移除
@@ -151,7 +151,7 @@ public class DownloadTask implements DownloadCallBack {
downloadData.setUrl(fileBean.getUrl()); downloadData.setUrl(fileBean.getUrl());
downloadData.setMsg("下载完成"); downloadData.setMsg("下载完成");
downloadData.setFilePath(fileBean.getSavePath() + fileBean.getFileName()); downloadData.setFilePath(fileBean.getSavePath() + fileBean.getFileName());
UiThreadHandler.post(() -> downloadCallBack.threadDownLoadFinished(url,threadBean)); UiThreadHandler.post(() -> downloadCallBack.threadDownLoadFinished(url,threadBean, localPath));
} }
} }

View File

@@ -5,12 +5,10 @@ import static com.mogo.eagle.core.utilcode.breakpoint.Config.DOWN_LOAD_TAG;
import android.util.Log; import android.util.Log;
import com.mogo.eagle.core.utilcode.breakpoint.Config;
import com.mogo.eagle.core.utilcode.breakpoint.bean.FileBean; import com.mogo.eagle.core.utilcode.breakpoint.bean.FileBean;
import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean; import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean;
import com.mogo.eagle.core.utilcode.breakpoint.callback.DownloadCallBack; import com.mogo.eagle.core.utilcode.breakpoint.callback.DownloadCallBack;
import com.mogo.eagle.core.utilcode.breakpoint.event.DownloadData; import com.mogo.eagle.core.utilcode.breakpoint.event.DownloadData;
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import java.io.File; import java.io.File;
@@ -53,7 +51,7 @@ public class DownloadThread extends Thread {
int start = threadBean.getStart() + threadBean.getFinished(); int start = threadBean.getStart() + threadBean.getFinished();
connection.setRequestProperty("Range","bytes="+start+"-"+threadBean.getEnd()); connection.setRequestProperty("Range","bytes="+start+"-"+threadBean.getEnd());
//设置写入位置 //设置写入位置
File file = new File(fileBean.getFileName().contains(".zip") ? Config.downLoadObuPath : Config.downLoadPath,fileBean.getFileName()); File file = new File(fileBean.getSavePath(),fileBean.getFileName());
raf = new RandomAccessFile(file,"rwd"); raf = new RandomAccessFile(file,"rwd");
raf.seek(start); raf.seek(start);
//开始下载 //开始下载
@@ -75,7 +73,7 @@ public class DownloadThread extends Thread {
} }
} }
//下载完成 //下载完成
UiThreadHandler.post(() -> callback.threadDownLoadFinished(this.fileBean.getUrl(),threadBean)); UiThreadHandler.post(() -> callback.threadDownLoadFinished(this.fileBean.getUrl(),threadBean, file.getAbsolutePath()));
} }
} catch (Exception e) { } catch (Exception e) {