From cb06973881072fb64631d46e7e1c554c903706ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Tue, 10 Oct 2023 08:00:00 +0800 Subject: [PATCH] Fix service reload --- app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt | 9 +++++++-- .../io/nekohasekai/sfa/ui/dashboard/OverviewFragment.kt | 2 +- .../io/nekohasekai/sfa/ui/profile/EditProfileActivity.kt | 4 ++-- .../sfa/ui/profile/EditProfileContentActivity.kt | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt b/app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt index 681e1f4..bbd363e 100644 --- a/app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt +++ b/app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt @@ -28,6 +28,7 @@ import io.nekohasekai.sfa.database.ProfileManager import io.nekohasekai.sfa.database.Settings import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext @@ -117,7 +118,7 @@ class BoxService( this.commandServer = commandServer } - private suspend fun startService() { + private suspend fun startService(delayStart: Boolean = false) { try { val selectedProfileId = Settings.selectedProfile if (selectedProfileId == -1L) { @@ -154,6 +155,10 @@ class BoxService( return } + if (delayStart) { + delay(200L) + } + newService.start() boxService = newService commandServer?.setService(boxService) @@ -182,7 +187,7 @@ class BoxService( Seq.destroyRef(refnum) } boxService = null - startService() + startService(true) } } diff --git a/app/src/main/java/io/nekohasekai/sfa/ui/dashboard/OverviewFragment.kt b/app/src/main/java/io/nekohasekai/sfa/ui/dashboard/OverviewFragment.kt index d98ed13..0c3bfb0 100644 --- a/app/src/main/java/io/nekohasekai/sfa/ui/dashboard/OverviewFragment.kt +++ b/app/src/main/java/io/nekohasekai/sfa/ui/dashboard/OverviewFragment.kt @@ -338,7 +338,7 @@ class OverviewFragment : Fragment() { if (restart) { mainActivity.reconnect() BoxService.stop() - delay(200) + delay(200L) mainActivity.startService() return } diff --git a/app/src/main/java/io/nekohasekai/sfa/ui/profile/EditProfileActivity.kt b/app/src/main/java/io/nekohasekai/sfa/ui/profile/EditProfileActivity.kt index 6a4fe3f..2674e5b 100644 --- a/app/src/main/java/io/nekohasekai/sfa/ui/profile/EditProfileActivity.kt +++ b/app/src/main/java/io/nekohasekai/sfa/ui/profile/EditProfileActivity.kt @@ -171,7 +171,7 @@ class EditProfileActivity : AbstractActivity() { val binding = binding ?: return binding.progressView.isVisible = true lifecycleScope.launch(Dispatchers.IO) { - delay(200) + delay(200L) try { ProfileManager.update(profile) } catch (e: Exception) { @@ -212,7 +212,7 @@ class EditProfileActivity : AbstractActivity() { val binding = binding ?: return binding.progressView.isVisible = true lifecycleScope.launch(Dispatchers.IO) { - delay(200) + delay(200L) try { Libbox.checkConfig(File(profile.typed.path).readText()) } catch (e: Exception) { diff --git a/app/src/main/java/io/nekohasekai/sfa/ui/profile/EditProfileContentActivity.kt b/app/src/main/java/io/nekohasekai/sfa/ui/profile/EditProfileContentActivity.kt index 876ab85..917c180 100644 --- a/app/src/main/java/io/nekohasekai/sfa/ui/profile/EditProfileContentActivity.kt +++ b/app/src/main/java/io/nekohasekai/sfa/ui/profile/EditProfileContentActivity.kt @@ -138,7 +138,7 @@ class EditProfileContentActivity : AbstractActivity() { } } withContext(Dispatchers.Main) { - delay(200) + delay(200L) binding.progressView.isInvisible = true } }