From 19d9bb198fd37ed9223d0dbe76a40a0bdb1d944a Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Fri, 5 Sep 2025 00:11:09 +0800 Subject: [PATCH] Work around ANR on DownloadManager initialization --- app/src/main/kotlin/com/hippo/ehviewer/EhApplication.kt | 5 +++++ app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/EhApplication.kt b/app/src/main/kotlin/com/hippo/ehviewer/EhApplication.kt index 778a56762..0ebff99cb 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/EhApplication.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/EhApplication.kt @@ -133,6 +133,7 @@ class EhApplication : if (DownloadManager.labelList.isNotEmpty() && Settings.downloadFilterMode !in Settings.snapshot()) { Settings.downloadFilterMode.value = DownloadsFilterMode.CUSTOM.flag } + initialized = true DownloadManager.readMetadataFromLocal() } launch { @@ -214,6 +215,10 @@ class EhApplication : } companion object { + @Volatile + var initialized = false + private set + val ktorClient by lazy { if (isAtLeastSExtension7 && Settings.enableCronet.value) { HttpClient(Cronet) { diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt index a677fb036..e26b41281 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt @@ -111,6 +111,7 @@ import com.ehviewer.core.ui.icons.filled.Subscriptions import com.ehviewer.core.ui.util.LocalSnackBarFabPadding import com.ehviewer.core.ui.util.LocalWindowSizeClass import com.ehviewer.core.util.withIOContext +import com.hippo.ehviewer.EhApplication.Companion.initialized import com.hippo.ehviewer.Settings import com.hippo.ehviewer.client.data.ListUrlBuilder import com.hippo.ehviewer.client.parser.GalleryDetailUrlParser @@ -200,7 +201,7 @@ class MainActivity : EhActivity() { @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter") override fun onCreate(savedInstanceState: Bundle?) { - installSplashScreen() + installSplashScreen().setKeepOnScreenCondition { !initialized } super.onCreate(savedInstanceState) setMD3Content { val configuration = LocalConfiguration.current