optimize stop before test

This commit is contained in:
arm64v8a 2023-03-16 18:39:45 +09:00
parent dc1515d04d
commit 7cf91435da
2 changed files with 10 additions and 10 deletions

View File

@ -558,14 +558,16 @@ class ConfigurationFragment @JvmOverloads constructor(
@Suppress("EXPERIMENTAL_API_USAGE") @Suppress("EXPERIMENTAL_API_USAGE")
fun pingTest(icmpPing: Boolean) { fun pingTest(icmpPing: Boolean) {
stopService()
val test = TestDialog() val test = TestDialog()
val testJobs = mutableListOf<Job>() val testJobs = mutableListOf<Job>()
val dialog = test.builder.show() val dialog = test.builder.show()
val mainJob = runOnDefaultDispatcher { val mainJob = runOnDefaultDispatcher {
if (DataStore.serviceState.started) {
stopService()
delay(500) // wait for service stop
}
val group = DataStore.currentGroup() val group = DataStore.currentGroup()
var profilesUnfiltered = SagerDatabase.proxyDao.getByGroup(group.id) val profilesUnfiltered = SagerDatabase.proxyDao.getByGroup(group.id)
test.proxyN = profilesUnfiltered.size test.proxyN = profilesUnfiltered.size
val profiles = ConcurrentLinkedQueue(profilesUnfiltered) val profiles = ConcurrentLinkedQueue(profilesUnfiltered)
val testPool = newFixedThreadPoolContext(5, "Connection test pool") val testPool = newFixedThreadPoolContext(5, "Connection test pool")
@ -692,13 +694,15 @@ class ConfigurationFragment @JvmOverloads constructor(
} }
fun urlTest() { fun urlTest() {
stopService()
val test = TestDialog() val test = TestDialog()
val dialog = test.builder.show() val dialog = test.builder.show()
val testJobs = mutableListOf<Job>() val testJobs = mutableListOf<Job>()
val mainJob = runOnDefaultDispatcher { val mainJob = runOnDefaultDispatcher {
if (DataStore.serviceState.started) {
stopService()
delay(500) // wait for service stop
}
val group = DataStore.currentGroup() val group = DataStore.currentGroup()
val profilesUnfiltered = SagerDatabase.proxyDao.getByGroup(group.id) val profilesUnfiltered = SagerDatabase.proxyDao.getByGroup(group.id)
test.proxyN = profilesUnfiltered.size test.proxyN = profilesUnfiltered.size

View File

@ -192,16 +192,12 @@ class SettingsPreferenceFragment : PreferenceFragmentCompat() {
true true
} }
serviceMode.setOnPreferenceChangeListener { _, _ ->
if (DataStore.serviceState.started) SagerNet.stopService()
true
}
val tunImplementation = findPreference<SimpleMenuPreference>(Key.TUN_IMPLEMENTATION)!! val tunImplementation = findPreference<SimpleMenuPreference>(Key.TUN_IMPLEMENTATION)!!
val resolveDestination = findPreference<SwitchPreference>(Key.RESOLVE_DESTINATION)!! val resolveDestination = findPreference<SwitchPreference>(Key.RESOLVE_DESTINATION)!!
val acquireWakeLock = findPreference<SwitchPreference>(Key.ACQUIRE_WAKE_LOCK)!! val acquireWakeLock = findPreference<SwitchPreference>(Key.ACQUIRE_WAKE_LOCK)!!
val enableClashAPI = findPreference<SwitchPreference>(Key.ENABLE_CLASH_API)!! val enableClashAPI = findPreference<SwitchPreference>(Key.ENABLE_CLASH_API)!!
serviceMode.onPreferenceChangeListener = reloadListener
mixedPort.onPreferenceChangeListener = reloadListener mixedPort.onPreferenceChangeListener = reloadListener
appendHttpProxy.onPreferenceChangeListener = reloadListener appendHttpProxy.onPreferenceChangeListener = reloadListener
showDirectSpeed.onPreferenceChangeListener = reloadListener showDirectSpeed.onPreferenceChangeListener = reloadListener