diff --git a/app/src/main/java/com/github/kr328/clash/AccessControlActivity.kt b/app/src/main/java/com/github/kr328/clash/AccessControlActivity.kt index 1511877930..50a16a1f55 100644 --- a/app/src/main/java/com/github/kr328/clash/AccessControlActivity.kt +++ b/app/src/main/java/com/github/kr328/clash/AccessControlActivity.kt @@ -11,7 +11,10 @@ import com.github.kr328.clash.design.AccessControlDesign import com.github.kr328.clash.design.model.AppInfo import com.github.kr328.clash.design.util.toAppInfo import com.github.kr328.clash.service.store.ServiceStore +import com.github.kr328.clash.util.startClashService +import com.github.kr328.clash.util.stopClashService import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay import kotlinx.coroutines.isActive import kotlinx.coroutines.selects.select import kotlinx.coroutines.withContext @@ -26,7 +29,15 @@ class AccessControlActivity : BaseActivity() { defer { withContext(Dispatchers.IO) { + val changed = selected != service.accessControlPackages service.accessControlPackages = selected + if (clashRunning && changed) { + stopClashService() + while (clashRunning) { + delay(200) + } + startClashService() + } } } diff --git a/design/src/main/java/com/github/kr328/clash/design/NetworkSettingsDesign.kt b/design/src/main/java/com/github/kr328/clash/design/NetworkSettingsDesign.kt index 2195840b85..7f942b0f9d 100644 --- a/design/src/main/java/com/github/kr328/clash/design/NetworkSettingsDesign.kt +++ b/design/src/main/java/com/github/kr328/clash/design/NetworkSettingsDesign.kt @@ -128,8 +128,6 @@ class NetworkSettingsDesign( clicked { requests.trySend(Request.StartAccessControlList) } - - vpnDependencies.add(this) } if (running) {