优化:仅当开启启动时异步获取已安装App列表总开关时获取

This commit is contained in:
pppscn 2023-12-14 17:33:32 +08:00
parent 33995b2ebd
commit b5517e3270
2 changed files with 11 additions and 12 deletions

View File

@ -564,10 +564,11 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding?>(), View.OnClickL
return@setOnCheckedChangeListener
}
SettingUtils.enableLoadAppList = isChecked
XToastUtils.info(getString(R.string.loading_app_list))
val request = OneTimeWorkRequestBuilder<LoadAppListWorker>().build()
WorkManager.getInstance(XUtil.getContext()).enqueue(request)
if (isChecked) {
XToastUtils.info(getString(R.string.loading_app_list))
val request = OneTimeWorkRequestBuilder<LoadAppListWorker>().build()
WorkManager.getInstance(XUtil.getContext()).enqueue(request)
}
}
scbLoadUserApp.isChecked = SettingUtils.enableLoadUserAppList
scbLoadUserApp.setOnCheckedChangeListener { _: SmoothCheckBox, isChecked: Boolean ->
@ -581,8 +582,6 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding?>(), View.OnClickL
XToastUtils.info(getString(R.string.loading_app_list))
val request = OneTimeWorkRequestBuilder<LoadAppListWorker>().build()
WorkManager.getInstance(XUtil.getContext()).enqueue(request)
} else {
initAppSpinner()
}
}
scbLoadSystemApp.isChecked = SettingUtils.enableLoadSystemAppList
@ -597,8 +596,6 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding?>(), View.OnClickL
XToastUtils.info(getString(R.string.loading_app_list))
val request = OneTimeWorkRequestBuilder<LoadAppListWorker>().build()
WorkManager.getInstance(XUtil.getContext()).enqueue(request)
} else {
initAppSpinner()
}
}
}
@ -1108,7 +1105,7 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding?>(), View.OnClickL
private fun initAppSpinner() {
//未开启异步获取已安装App信息开关时不显示已安装APP下拉框
if (!SettingUtils.enableLoadUserAppList && !SettingUtils.enableLoadSystemAppList) return
if (!SettingUtils.enableLoadAppList) return
if (App.UserAppList.isEmpty() && App.SystemAppList.isEmpty()) {
//XToastUtils.info(getString(R.string.loading_app_list))

View File

@ -11,14 +11,17 @@ import com.jeremyliao.liveeventbus.LiveEventBus
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@Suppress("PrivatePropertyName")
class LoadAppListWorker(
context: Context,
workerParams: WorkerParameters,
) : CoroutineWorker(context, workerParams) {
private val TAG: String = LoadAppListWorker::class.java.simpleName
override suspend fun doWork(): Result = withContext(Dispatchers.IO) {
if (App.LoadingAppList) {
Log.d("LoadAppListWorker", "LoadingAppList is true, return")
Log.d(TAG, "LoadingAppList is true, return")
return@withContext Result.success()
}
@ -36,10 +39,9 @@ class LoadAppListWorker(
App.UserAppList.sortBy { appInfo -> appInfo.name }
App.SystemAppList.sortBy { appInfo -> appInfo.name }
LiveEventBus.get(EVENT_LOAD_APP_LIST, String::class.java).post("finish")
App.LoadingAppList = false
Log.d("LoadAppListWorker", "LoadAppListWorker finish")
Log.d(TAG, "LoadAppListWorker finish")
return@withContext Result.success()
}