From 632000cb568235caaa4e5b411a6a491a23e3fbc8 Mon Sep 17 00:00:00 2001 From: kangshulong <1095887643@qq.com> Date: Mon, 10 Nov 2025 16:42:17 +0800 Subject: [PATCH] =?UTF-8?q?1.apk=20=E5=AE=89=E8=A3=85=E8=BF=87=E7=A8=8B?= =?UTF-8?q?=E4=B8=AD=E9=87=8D=E5=90=AFapk=E6=9C=AA=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E6=9C=AA=E5=88=A0=E9=99=A4=E5=AE=89=E8=A3=85=E5=8C=85=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E7=BB=A7=E7=BB=AD=E5=AE=89=E8=A3=85=E5=B9=B6?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=AE=89=E8=A3=85=E5=8C=85=202.apk=20?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E8=BF=87=E7=A8=8B=E4=B8=AD=E9=87=8D=E5=90=AF?= =?UTF-8?q?apk=E5=B7=B2=E5=AE=89=E8=A3=85=E6=9C=AA=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E5=8C=85=E4=BF=AE=E6=94=B9=E4=B8=BA=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=AE=89=E8=A3=85=E5=8C=85=203.DownLoadManager?= =?UTF-8?q?=E6=92=A4=E5=9B=9E=E4=B8=8B=E8=BD=BD=E4=BB=BB=E5=8A=A1=E4=BD=86?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=A2=E5=A4=B1=E4=BC=9A=E4=BA=A7=E7=94=9F?= =?UTF-8?q?-tmp=200=20size=E5=A4=A7=E5=B0=8F=E6=96=87=E4=BB=B6bug,?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=BC=82=E5=B8=B8=E6=97=A5=E5=BF=97=E6=89=93?= =?UTF-8?q?=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ik/mboxlauncher/ui/Launcher.java | 13 ++++++- .../com/android/download/DownLoadManeger.java | 11 ++---- .../android/download/DownLoadTaskThread.java | 8 ++-- .../java/com/android/nebulasdk/ADManager.java | 37 +++++++++++++++++++ 4 files changed, 55 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/ik/mboxlauncher/ui/Launcher.java b/app/src/main/java/com/ik/mboxlauncher/ui/Launcher.java index 33c0f03..aa114eb 100644 --- a/app/src/main/java/com/ik/mboxlauncher/ui/Launcher.java +++ b/app/src/main/java/com/ik/mboxlauncher/ui/Launcher.java @@ -44,6 +44,7 @@ import com.android.nebulasdk.bean.FavNaviBean; import com.android.util.GsonUtil; import com.android.util.IntentUtil; import com.android.util.LogUtils; +import com.android.util.NetUtil; import com.android.util.PakageInstallUtil; import com.ik.mboxlauncher.R; import com.ik.mboxlauncher.ui.adapter.CustomAppAdapter; @@ -322,7 +323,12 @@ public class Launcher extends FragmentActivity implements SplashView.SplashAdLi } - + private boolean isNetworkAvailable() { + int netState = NetUtil.getNetWorkState(this); + return netState == NetUtil.NETWORK_MOBILE + || netState == NetUtil.NETWORK_WIFI + || netState == NetUtil.NETWORK_ETHERNET; + } @Override protected int getFramlayoutId() { return R.layout.main; @@ -949,7 +955,10 @@ public boolean onGenericMotionEvent(MotionEvent event) { if(isSplashEnd) { ADSWindowManager.getInstance().startVideo(); } - ADManager.getInstance().clearTaskInteruptQueueAndRestart(); + if(isNetworkAvailable()){ + ADManager.getInstance().clearApkFileByPowerDown(); + ADManager.getInstance().clearTaskInteruptQueueAndRestart(); + } setImageViewData(); loadShortAppList(); } diff --git a/mylibrary/src/main/java/com/android/download/DownLoadManeger.java b/mylibrary/src/main/java/com/android/download/DownLoadManeger.java index 6736546..d29f9ec 100644 --- a/mylibrary/src/main/java/com/android/download/DownLoadManeger.java +++ b/mylibrary/src/main/java/com/android/download/DownLoadManeger.java @@ -143,7 +143,9 @@ public class DownLoadManeger { TaskQueue.getInstance().add(new DownLoadTaskThread(downLoadTaskBean, observer)); } } - + if(!file.exists()&&downLoadTaskBean.getCurrentProgress()==0){ + LogUtils.loge("power down but downloadstaskbean table remain task"); + } } } } @@ -156,13 +158,6 @@ public class DownLoadManeger { if(file.exists()&&file.length()>0&&file.length()<=downLoadTaskBean.getTotal()){ downLoadTaskBean.setCurrentProgress(file.length()); DaoManager.getInstance().update(DownLoadTaskBean.class,downLoadTaskBean); - }else if(!file.exists()){ - try { - boolean createFileSuccess=file.createNewFile(); - LogUtils.loge("下载任务但文件丢失创建文件="+createFileSuccess); - } catch (IOException e) { - throw new RuntimeException(e); - } } }else if(downLoadTaskBean.getCurrentProgress()!=0&&!TextUtils.isEmpty(downLoadTaskBean.getUrl())&&!TextUtils.isEmpty(downLoadTaskBean.getFileName())&&!TextUtils.isEmpty(downLoadTaskBean.getPath())){ File file = new File(downLoadTaskBean.getPath()+downLoadTaskBean.getFileName()+"-tmp"); diff --git a/mylibrary/src/main/java/com/android/download/DownLoadTaskThread.java b/mylibrary/src/main/java/com/android/download/DownLoadTaskThread.java index 90510c2..6b57ec5 100644 --- a/mylibrary/src/main/java/com/android/download/DownLoadTaskThread.java +++ b/mylibrary/src/main/java/com/android/download/DownLoadTaskThread.java @@ -64,9 +64,9 @@ public class DownLoadTaskThread implements Runnable { if(currentTotal==bean.getTotal()){ File targFile = new File(bean.getPath(), bean.getFileName()); file.renameTo(targFile);//重命名 - Thread.sleep(5000); - file.delete();//删除临时文件 + Thread.sleep(3000); observer.onFinish(bean, bean.getTaskId(), currentTotal); + file.delete();//删除临时文件 return; } //设置下载位置 @@ -115,10 +115,10 @@ public class DownLoadTaskThread implements Runnable { LogUtils.loge("download Exception===>sleeping before"); File targFile = new File(bean.getPath(), bean.getFileName()); file.renameTo(targFile);//重命名 - Thread.sleep(5000); - file.delete();//删除临时文件 + Thread.sleep(3000); LogUtils.loge("download Exception===>sleeping after"); observer.onFinish(bean, bean.getTaskId(), currentTotal); + file.delete();//删除临时文件 }else { LogUtils.loge("下载失败"); if (observer != null) { diff --git a/mylibrary/src/main/java/com/android/nebulasdk/ADManager.java b/mylibrary/src/main/java/com/android/nebulasdk/ADManager.java index a343ce4..5de1e9a 100644 --- a/mylibrary/src/main/java/com/android/nebulasdk/ADManager.java +++ b/mylibrary/src/main/java/com/android/nebulasdk/ADManager.java @@ -454,7 +454,44 @@ public class ADManager implements DownLoadManeger.DownloadListener { DownLoadManeger.getInstance().updateDownloadTaskBeanTable(); } + public void clearApkFileByPowerDown(){ + List list = DaoManager.getInstance().queryList(DownLoadTaskBean.class); + if(list==null||list.size()==0){ + String apkDir = FileUtil.getBakPath(mContext, 1); + File apkFile = new File(apkDir); + if(apkFile.exists()){ + File[] files = apkFile.listFiles(); + for (int i = 0; i < files.length; i++) { + boolean isApk = files[i].getAbsolutePath().endsWith("apk"); + if(isApk){ + String apkFileName = files[i].getName(); + int apkFileContainIndex=-1; + List adsInfoBeanList = DaoManager.getInstance().queryList(AdsInfoBean.class); + for (int j = 0; j < adsInfoBeanList.size(); j++) { + if(!TextUtils.isEmpty(adsInfoBeanList.get(j).getAppUrl())&&adsInfoBeanList.get(j).getAppUrl().contains(apkFileName)){ + apkFileContainIndex=j; + break; + } + } + if(apkFileContainIndex==-1){ + files[i].delete(); + LogUtils.loge("apk data rm need delete app"); + }else { + AdsInfoBean adsInfoBean = adsInfoBeanList.get(apkFileContainIndex); + if(!(PakageInstallUtil.checkAppInstall(mContext,adsInfoBean.getInfo()))||PakageInstallUtil.checkAppUpdate(mContext,adsInfoBean.getInfo(),(int) adsInfoBean.getAppVersion())){ //需要跟新app + LogUtils.loge("need reinstall app"); + addDownloadTask(adsInfoBean,adsInfoBean.getAppUrl(),1,adsInfoBean.getAppSize()); + }else { + LogUtils.loge("need delete app"); + files[i].delete(); + } + } + } + } + } + } + } }