From 6da7eff62ce2595afba6f3d87eb2a851d88728b7 Mon Sep 17 00:00:00 2001 From: Kr328 <39107975+Kr328@users.noreply.github.com> Date: Tue, 14 Apr 2020 02:07:19 +0800 Subject: [PATCH] fix reload logic --- .../kr328/clash/service/ProfileBackgroundService.kt | 2 +- .../github/kr328/clash/service/ProfileService.kt | 4 +--- .../com/github/kr328/clash/service/TunService.kt | 8 ++++---- .../kr328/clash/service/clash/ClashRuntime.kt | 2 +- .../service/clash/module/NetworkObserveModule.kt | 13 +++++++++++-- .../clash/service/clash/module/ReloadModule.kt | 2 +- .../kr328/clash/service/data/DatabaseMigrations.kt | 5 ----- 7 files changed, 19 insertions(+), 17 deletions(-) diff --git a/service/src/main/java/com/github/kr328/clash/service/ProfileBackgroundService.kt b/service/src/main/java/com/github/kr328/clash/service/ProfileBackgroundService.kt index 734ba1b..d48836d 100644 --- a/service/src/main/java/com/github/kr328/clash/service/ProfileBackgroundService.kt +++ b/service/src/main/java/com/github/kr328/clash/service/ProfileBackgroundService.kt @@ -159,7 +159,7 @@ class ProfileBackgroundService : BaseService() { } private fun refreshStatusNotification(queueSize: Int) { - val content = if ( queueSize != 0 ) + val content = if (queueSize != 0) getString(R.string.format_in_queue, queueSize) else getString(R.string.waiting) diff --git a/service/src/main/java/com/github/kr328/clash/service/ProfileService.kt b/service/src/main/java/com/github/kr328/clash/service/ProfileService.kt index 26b57e6..c187af0 100644 --- a/service/src/main/java/com/github/kr328/clash/service/ProfileService.kt +++ b/service/src/main/java/com/github/kr328/clash/service/ProfileService.kt @@ -5,9 +5,9 @@ import android.net.Uri import android.os.IBinder import android.os.RemoteException import com.github.kr328.clash.service.data.ProfileDao -import com.github.kr328.clash.service.transact.IStreamCallback import com.github.kr328.clash.service.model.ProfileMetadata import com.github.kr328.clash.service.model.toProfileMetadata +import com.github.kr328.clash.service.transact.IStreamCallback import com.github.kr328.clash.service.util.broadcastProfileChanged import com.github.kr328.clash.service.util.resolveBaseDir import com.github.kr328.clash.service.util.resolveProfileFile @@ -150,8 +150,6 @@ class ProfileService : BaseService() { override fun onCreate() { super.onCreate() - ProfileReceiver.tryInitialize(this) - launch { process() } diff --git a/service/src/main/java/com/github/kr328/clash/service/TunService.kt b/service/src/main/java/com/github/kr328/clash/service/TunService.kt index d704bed..2b2ef0e 100644 --- a/service/src/main/java/com/github/kr328/clash/service/TunService.kt +++ b/service/src/main/java/com/github/kr328/clash/service/TunService.kt @@ -40,6 +40,10 @@ class TunService : VpnService(), CoroutineScope by MainScope() { val settings = ServiceSettings(service) val dnsInject = DnsInjectModule() + runtime.install(TunModule(service)) { + configure = TunConfigure(settings) + } + runtime.install(ReloadModule(service)) { onLoaded { if (it != null) { @@ -70,10 +74,6 @@ class TunService : VpnService(), CoroutineScope by MainScope() { else runtime.install(StaticNotificationModule(service)) - runtime.install(TunModule(service)) { - configure = TunConfigure(settings) - } - runtime.install(dnsInject) { dnsOverride = settings.get(ServiceSettings.OVERRIDE_DNS) } diff --git a/service/src/main/java/com/github/kr328/clash/service/clash/ClashRuntime.kt b/service/src/main/java/com/github/kr328/clash/service/clash/ClashRuntime.kt index 76bf5e4..dbed6b4 100644 --- a/service/src/main/java/com/github/kr328/clash/service/clash/ClashRuntime.kt +++ b/service/src/main/java/com/github/kr328/clash/service/clash/ClashRuntime.kt @@ -95,4 +95,4 @@ class ClashRuntime(private val context: Context) { } } } -} \ No newline at end of file +} diff --git a/service/src/main/java/com/github/kr328/clash/service/clash/module/NetworkObserveModule.kt b/service/src/main/java/com/github/kr328/clash/service/clash/module/NetworkObserveModule.kt index 955dfcd..0ba3c3c 100644 --- a/service/src/main/java/com/github/kr328/clash/service/clash/module/NetworkObserveModule.kt +++ b/service/src/main/java/com/github/kr328/clash/service/clash/module/NetworkObserveModule.kt @@ -2,6 +2,7 @@ package com.github.kr328.clash.service.clash.module import android.content.Context import android.net.* +import com.github.kr328.clash.common.utils.Log import kotlinx.coroutines.sync.Mutex import java.net.InetAddress @@ -50,11 +51,19 @@ class NetworkObserveModule(context: Context) : Module() { } override suspend fun onStart() { - connectivity.registerNetworkCallback(NetworkRequest.Builder().build(), callback) + try { + connectivity.registerNetworkCallback(NetworkRequest.Builder().build(), callback) + } catch (e: Exception) { + Log.w("Register NetworkCallback failure", e) + } } override suspend fun onStop() { - connectivity.unregisterNetworkCallback(callback) + try { + connectivity.unregisterNetworkCallback(callback) + } catch (e: Exception) { + Log.w("Unregister NetworkCallback failure", e) + } } fun onNetworkChanged(callback: (Network?, List) -> Unit) { diff --git a/service/src/main/java/com/github/kr328/clash/service/clash/module/ReloadModule.kt b/service/src/main/java/com/github/kr328/clash/service/clash/module/ReloadModule.kt index b54afb5..7b460c7 100644 --- a/service/src/main/java/com/github/kr328/clash/service/clash/module/ReloadModule.kt +++ b/service/src/main/java/com/github/kr328/clash/service/clash/module/ReloadModule.kt @@ -46,7 +46,7 @@ class ReloadModule(private val context: Context) : Module() { Clash.loadProfile( context.resolveProfileFile(active.id), - context.resolveBaseDir(active.id) + context.resolveBaseDir(active.id).apply { mkdirs() } ).await() val remove = SelectedProxyDao.querySelectedForProfile(active.id) diff --git a/service/src/main/java/com/github/kr328/clash/service/data/DatabaseMigrations.kt b/service/src/main/java/com/github/kr328/clash/service/data/DatabaseMigrations.kt index 2308bc8..1364431 100644 --- a/service/src/main/java/com/github/kr328/clash/service/data/DatabaseMigrations.kt +++ b/service/src/main/java/com/github/kr328/clash/service/data/DatabaseMigrations.kt @@ -153,11 +153,6 @@ object DatabaseMigrations { database.query("SELECT name, type, uri, source, active, update_interval, id FROM _profiles") .use { cursor -> - Global.application.filesDir.resolve(Constants.CLASH_DIR).listFiles() - ?.forEach { - it.deleteRecursively() - } - cursor.moveToFirst() while (!cursor.isAfterLast) { // old