fix: 处理弹窗 dismiss 问题

This commit is contained in:
chenjuntao
2023-07-10 16:20:22 +08:00
parent 919a98ffe6
commit 3cd065cb6e

View File

@ -92,7 +92,7 @@ class VSpaceDialogFragment : BaseDraggableDialogFragment() {
val mViewModel = viewModelProvider<VSpaceDialogViewModel>()
mViewModel.packageLiveData.observe(this) {
dismissDialogIfInstalled(false)
dismissDialogIfInstalled()
}
mBinding.downloadBtn.text = "下载畅玩助手服务组件"
@ -206,27 +206,29 @@ class VSpaceDialogFragment : BaseDraggableDialogFragment() {
} else {
showVSpace32DownloadDialogIfNeeded()
}
dismissDialogIfInstalled(false)
}
} else {
// 手动再检查一下安装状态,避免出现已安装但是没有 dismiss 弹窗的问题
dismissDialogIfInstalled(true)
}
// 检查安装状态,避免出现已安装但是没有 dismiss 弹窗的问题
dismissDialogIfInstalled()
}
/**
* dismiss 当前 VSpaceDialogFragment (如果满足入参条件的话)
* @param required64BitVersionMatched 是否需要 64 位组件匹配版本
*/
private fun dismissDialogIfInstalled(required64BitVersionMatched: Boolean) {
if (PackageUtils.isInstalledFromAllPackage(requireContext(), VHelper.DEFAULT_VSPACE_PACKAGENAME)) {
if (required64BitVersionMatched) {
if (mAppEntity64?.version == PackageUtils.getVersionNameByPackageName(VHelper.DEFAULT_VSPACE_PACKAGENAME)) {
dismissAllowingStateLoss()
}
} else {
dismissAllowingStateLoss()
}
private fun dismissDialogIfInstalled() {
// 需要下载的 64 位组件是否与已安装的 64 位组件版本一致
val is64BitVersionMatched =
mAppEntity64 == null
|| mAppEntity64?.version == PackageUtils.getVersionNameByPackageName(VHelper.DEFAULT_VSPACE_PACKAGENAME)
// 需要下载的 32 位组件是否与已安装的 32 位组件版本一致
val is32BitVersionMatched =
mAppEntity32 == null
|| mAppEntity32?.version == PackageUtils.getVersionNameByPackageName(VHelper.VSPACE_32BIT_PACKAGENAME)
if (is64BitVersionMatched && is32BitVersionMatched) {
dismissAllowingStateLoss()
}
}
@ -385,7 +387,6 @@ class VSpaceDialogFragment : BaseDraggableDialogFragment() {
)
}
val downloadDialog = VSpaceDialogFragment().apply {
arguments = Bundle().apply {
if (appEntity64 != null) putParcelable(KEY_APP_ENTITY_64, appEntity64)
@ -403,6 +404,14 @@ class VSpaceDialogFragment : BaseDraggableDialogFragment() {
)
}
/**
* 显示下载弹窗
* @param appEntity64 需要下载的 64 位组件实体,不为空即代表需要下载
* @param appEntity32 需要下载的 32 位组件实体,不为空即代表需要下载
* @param gameEntity 游戏相关的实体
* @param autoDownload 是否需要显示弹窗即进行下载
* @param isUpdate 是否为更新
*/
@JvmStatic
fun showDownloadDialog(
context: Context?,