fix reload logic

This commit is contained in:
Kr328
2020-04-14 02:07:19 +08:00
parent a75192b6bf
commit 6da7eff62c
7 changed files with 19 additions and 17 deletions

View File

@@ -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)

View File

@@ -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()
}

View File

@@ -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)
}

View File

@@ -95,4 +95,4 @@ class ClashRuntime(private val context: Context) {
}
}
}
}
}

View File

@@ -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<InetAddress>) -> Unit) {

View File

@@ -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)

View File

@@ -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