浏览代码

1. 优化 App 下载和策略更新逻辑

- 添加防抖处理,避免频繁请求-
- 改进下载任务的执行流程
-优化策略更新的触发条件
2025_1_17_tb223fc
wangwanlei 5 天前
父节点
当前提交
e95047464e
共有 1 个文件被更改,包括 41 次插入8 次删除
  1. 41
    8
      app/src/main/java/com/xhly/manageapp/ui/main/activity/MainActivity.kt

+ 41
- 8
app/src/main/java/com/xhly/manageapp/ui/main/activity/MainActivity.kt 查看文件

107
 import com.xhly.manageapp.utils.SystemClock
107
 import com.xhly.manageapp.utils.SystemClock
108
 import com.xhly.manageapp.workmanager.TimingWorker
108
 import com.xhly.manageapp.workmanager.TimingWorker
109
 import kotlinx.coroutines.Dispatchers
109
 import kotlinx.coroutines.Dispatchers
110
+import kotlinx.coroutines.Job
110
 import kotlinx.coroutines.delay
111
 import kotlinx.coroutines.delay
111
 import kotlinx.coroutines.launch
112
 import kotlinx.coroutines.launch
112
 import kotlinx.coroutines.withContext
113
 import kotlinx.coroutines.withContext
119
 
120
 
120
 class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), DownloadCallback {
121
 class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), DownloadCallback {
121
     var adapter: AppAdapter? = null
122
     var adapter: AppAdapter? = null
122
-
123
+    private var debounceJob: Job? = null
124
+    private var useTimeStrategyDebounceJob: Job? = null
123
     private var mMyInstallReceiver: AppInstallReceiver? = null
125
     private var mMyInstallReceiver: AppInstallReceiver? = null
124
     private var netConnectReceiver: NetConnectReceiver? = null
126
     private var netConnectReceiver: NetConnectReceiver? = null
125
     private var mScreenReceiver: ScreenReceiver? = null
127
     private var mScreenReceiver: ScreenReceiver? = null
731
     }
733
     }
732
 
734
 
733
     private fun installAppList(modelList:ArrayList<AppModel>?) {
735
     private fun installAppList(modelList:ArrayList<AppModel>?) {
736
+        Log.d("开始执行下载任务","任务开始111"+modelList?.size)
734
         modelList?.let {
737
         modelList?.let {
735
             //如果已经进入商店则不显示
738
             //如果已经进入商店则不显示
736
             if (!Const.startAppStoreFlag) {
739
             if (!Const.startAppStoreFlag) {
749
                                  }
752
                                  }
750
                                  val file = getExternalFilesDir(null)*/
753
                                  val file = getExternalFilesDir(null)*/
751
                             var file: File? = null
754
                             var file: File? = null
752
-                            if (ModelNameUtils.IS_LianxTB223FC()) {
755
+                            if (ModelNameUtils.IS_LianxTB223FC()||ModelNameUtils.IS_LianxX505f()) {
753
                                 var directory =
756
                                 var directory =
754
                                     Environment.getExternalStoragePublicDirectory(
757
                                     Environment.getExternalStoragePublicDirectory(
755
                                         Environment.DIRECTORY_DOWNLOADS
758
                                         Environment.DIRECTORY_DOWNLOADS
766
                                 }
769
                                 }
767
                                 file = getExternalFilesDir(null)
770
                                 file = getExternalFilesDir(null)
768
                             }
771
                             }
772
+                            Log.d("开始执行下载任务","任务开始")
769
                             modelList.forEach { app ->
773
                             modelList.forEach { app ->
770
                                 try {
774
                                 try {
771
                                     //获得已安装的应用判断版本,未安装的则直接静默安装。
775
                                     //获得已安装的应用判断版本,未安装的则直接静默安装。
789
                                                 filter[0].versionNum
793
                                                 filter[0].versionNum
790
                                             }
794
                                             }
791
                                         if (app.versionNum > appversion) {
795
                                         if (app.versionNum > appversion) {
796
+                                            Log.d("开始执行下载任务","任务开始循环执行安装1")
792
                                             //版本低则更新安装。
797
                                             //版本低则更新安装。
793
                                             //AppDownLoadUtils.addToDownloadQueue(apkPath, appName,app.appPackage)
798
                                             //AppDownLoadUtils.addToDownloadQueue(apkPath, appName,app.appPackage)
794
                                             DownLoadUtils.addDownload(
799
                                             DownLoadUtils.addDownload(
804
                                             )
809
                                             )
805
                                         }
810
                                         }
806
                                     } else {
811
                                     } else {
812
+                                        Log.d("开始执行下载任务","任务开始循环执行安装2")
807
                                         //不存在,直接下载安装。
813
                                         //不存在,直接下载安装。
808
                                         //AppDownLoadUtils.addToDownloadQueue(apkPath, appName,app.appPackage)
814
                                         //AppDownLoadUtils.addToDownloadQueue(apkPath, appName,app.appPackage)
809
                                         DownLoadUtils.addDownload(
815
                                         DownLoadUtils.addDownload(
1288
     }
1294
     }
1289
 
1295
 
1290
     private fun updateAllStrategy() {
1296
     private fun updateAllStrategy() {
1291
-        Const.backNum = 0
1292
         userBean?.let {
1297
         userBean?.let {
1293
             Const.USERID = it.userid
1298
             Const.USERID = it.userid
1294
             Const.USERNAME = it.username.toString()
1299
             Const.USERNAME = it.username.toString()
1295
-            viewModel.postDevicesetDetail(it.schoolid)
1300
+            // 取消之前的防抖任务
1301
+            debounceJob?.cancel()
1302
+            debounceJob= lifecycleScope.launch {
1303
+                delay(10000)
1304
+                Log.d("开始执行下载任务","策略执行任务开始")
1305
+                if (DownLoadUtils.isEmpty()){
1306
+                    viewModel.postDevicesetDetail(it.schoolid)
1307
+                }
1308
+            }
1296
         }
1309
         }
1310
+        Const.backNum = 0
1297
         netStrategyDataFlag = true
1311
         netStrategyDataFlag = true
1298
         viewModel.postWallpaperPad()
1312
         viewModel.postWallpaperPad()
1299
         viewModel.updateStrategy()
1313
         viewModel.updateStrategy()
1600
             }*/
1614
             }*/
1601
             //没有单点登录所以不再判断
1615
             //没有单点登录所以不再判断
1602
             LogShow("锁定了吧打开app拉起请求,type==$type"+(userBean==null))
1616
             LogShow("锁定了吧打开app拉起请求,type==$type"+(userBean==null))
1603
-            userBean?.let {
1604
-                netAutoAppFlag = true
1605
-                viewModel.postAutoAppDetail(it.regionid)
1617
+            useTimeStrategyDebounceJob?.cancel()
1618
+            useTimeStrategyDebounceJob = lifecycleScope.launch {
1619
+                delay(1000)
1620
+                userBean?.let {
1621
+                    netAutoAppFlag = true
1622
+                    viewModel.postAutoAppDetail(it.regionid)
1623
+                }
1606
             }
1624
             }
1607
         }
1625
         }
1608
     }
1626
     }
1774
                     data.appPackage = message
1792
                     data.appPackage = message
1775
                     data.doEvent = EventLog.APPINSTALLEVENT
1793
                     data.doEvent = EventLog.APPINSTALLEVENT
1776
                     viewModel.eventLog(data)
1794
                     viewModel.eventLog(data)
1777
-                    updateAllStrategy()
1795
+                    if (DownLoadUtils.isEmpty()){
1796
+                        updateAllStrategy()
1797
+                    }
1778
                 } catch (e: Exception) {
1798
                 } catch (e: Exception) {
1779
 
1799
 
1780
                 }
1800
                 }
2616
             timer?.cancel()
2636
             timer?.cancel()
2617
             timer = null
2637
             timer = null
2618
         }
2638
         }
2639
+        debounceJob?.cancel()
2640
+        useTimeStrategyDebounceJob?.cancel()
2619
         //销毁时清除所有缓存
2641
         //销毁时清除所有缓存
2620
         clearAllMemory()
2642
         clearAllMemory()
2621
         locationClient?.stop()
2643
         locationClient?.stop()
2683
             val firstOrNull = appList.firstOrNull { it.packageName.equals(downItem.pkgName) }
2705
             val firstOrNull = appList.firstOrNull { it.packageName.equals(downItem.pkgName) }
2684
             if (firstOrNull != null) {
2706
             if (firstOrNull != null) {
2685
                 if (downItem.appversion > firstOrNull.versionNum) {
2707
                 if (downItem.appversion > firstOrNull.versionNum) {
2708
+                    /*try {
2709
+                        val autoAppBean = spUtils.getFromJson(
2710
+                            Const.AUTOAPPKEY,
2711
+                            AutoAppBean().javaClass
2712
+                        ) as AutoAppBean
2713
+                        if (autoAppBean.appPackage.equals(downItem.pkgName)){
2714
+                            clearAllMemory()
2715
+                        }
2716
+                    }catch (e:Exception){
2717
+
2718
+                    }*/
2686
                     InstallUtils.addInstall(downItem.savepath, downItem.pkgName, downItem.appName)
2719
                     InstallUtils.addInstall(downItem.savepath, downItem.pkgName, downItem.appName)
2687
                 }
2720
                 }
2688
             } else {
2721
             } else {

正在加载...
取消
保存