Bläddra i källkod

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

- 添加防抖处理,避免频繁请求-
- 改进下载任务的执行流程
-优化策略更新的触发条件
2025_1_17_tb223fc
wangwanlei 5 dagar sedan
förälder
incheckning
e95047464e
1 ändrade filer med 41 tillägg och 8 borttagningar
  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 Visa fil

@@ -107,6 +107,7 @@ import com.xhly.manageapp.utils.StrategyUtils
107 107
 import com.xhly.manageapp.utils.SystemClock
108 108
 import com.xhly.manageapp.workmanager.TimingWorker
109 109
 import kotlinx.coroutines.Dispatchers
110
+import kotlinx.coroutines.Job
110 111
 import kotlinx.coroutines.delay
111 112
 import kotlinx.coroutines.launch
112 113
 import kotlinx.coroutines.withContext
@@ -119,7 +120,8 @@ import java.util.concurrent.TimeUnit
119 120
 
120 121
 class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), DownloadCallback {
121 122
     var adapter: AppAdapter? = null
122
-
123
+    private var debounceJob: Job? = null
124
+    private var useTimeStrategyDebounceJob: Job? = null
123 125
     private var mMyInstallReceiver: AppInstallReceiver? = null
124 126
     private var netConnectReceiver: NetConnectReceiver? = null
125 127
     private var mScreenReceiver: ScreenReceiver? = null
@@ -731,6 +733,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
731 733
     }
732 734
 
733 735
     private fun installAppList(modelList:ArrayList<AppModel>?) {
736
+        Log.d("开始执行下载任务","任务开始111"+modelList?.size)
734 737
         modelList?.let {
735 738
             //如果已经进入商店则不显示
736 739
             if (!Const.startAppStoreFlag) {
@@ -749,7 +752,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
749 752
                                  }
750 753
                                  val file = getExternalFilesDir(null)*/
751 754
                             var file: File? = null
752
-                            if (ModelNameUtils.IS_LianxTB223FC()) {
755
+                            if (ModelNameUtils.IS_LianxTB223FC()||ModelNameUtils.IS_LianxX505f()) {
753 756
                                 var directory =
754 757
                                     Environment.getExternalStoragePublicDirectory(
755 758
                                         Environment.DIRECTORY_DOWNLOADS
@@ -766,6 +769,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
766 769
                                 }
767 770
                                 file = getExternalFilesDir(null)
768 771
                             }
772
+                            Log.d("开始执行下载任务","任务开始")
769 773
                             modelList.forEach { app ->
770 774
                                 try {
771 775
                                     //获得已安装的应用判断版本,未安装的则直接静默安装。
@@ -789,6 +793,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
789 793
                                                 filter[0].versionNum
790 794
                                             }
791 795
                                         if (app.versionNum > appversion) {
796
+                                            Log.d("开始执行下载任务","任务开始循环执行安装1")
792 797
                                             //版本低则更新安装。
793 798
                                             //AppDownLoadUtils.addToDownloadQueue(apkPath, appName,app.appPackage)
794 799
                                             DownLoadUtils.addDownload(
@@ -804,6 +809,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
804 809
                                             )
805 810
                                         }
806 811
                                     } else {
812
+                                        Log.d("开始执行下载任务","任务开始循环执行安装2")
807 813
                                         //不存在,直接下载安装。
808 814
                                         //AppDownLoadUtils.addToDownloadQueue(apkPath, appName,app.appPackage)
809 815
                                         DownLoadUtils.addDownload(
@@ -1288,12 +1294,20 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
1288 1294
     }
1289 1295
 
1290 1296
     private fun updateAllStrategy() {
1291
-        Const.backNum = 0
1292 1297
         userBean?.let {
1293 1298
             Const.USERID = it.userid
1294 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 1311
         netStrategyDataFlag = true
1298 1312
         viewModel.postWallpaperPad()
1299 1313
         viewModel.updateStrategy()
@@ -1600,9 +1614,13 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
1600 1614
             }*/
1601 1615
             //没有单点登录所以不再判断
1602 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,7 +1792,9 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
1774 1792
                     data.appPackage = message
1775 1793
                     data.doEvent = EventLog.APPINSTALLEVENT
1776 1794
                     viewModel.eventLog(data)
1777
-                    updateAllStrategy()
1795
+                    if (DownLoadUtils.isEmpty()){
1796
+                        updateAllStrategy()
1797
+                    }
1778 1798
                 } catch (e: Exception) {
1779 1799
 
1780 1800
                 }
@@ -2616,6 +2636,8 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
2616 2636
             timer?.cancel()
2617 2637
             timer = null
2618 2638
         }
2639
+        debounceJob?.cancel()
2640
+        useTimeStrategyDebounceJob?.cancel()
2619 2641
         //销毁时清除所有缓存
2620 2642
         clearAllMemory()
2621 2643
         locationClient?.stop()
@@ -2683,6 +2705,17 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
2683 2705
             val firstOrNull = appList.firstOrNull { it.packageName.equals(downItem.pkgName) }
2684 2706
             if (firstOrNull != null) {
2685 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 2719
                     InstallUtils.addInstall(downItem.savepath, downItem.pkgName, downItem.appName)
2687 2720
                 }
2688 2721
             } else {

Laddar…
Avbryt
Spara