fix crash on ipv6 enable & reduce provider call

This commit is contained in:
Kr328 committed 2020-02-26 14:06:46 +08:00
1 parent ca739a5e2f
commit 568f1f12e7
3 files changed
+15 -5

No files matched your search

@@ -2,6 +2,7 @@ package com.github.kr328.clash.service
import android.content.Context
import android.content.SharedPreferences
import rikka.preference.MultiProcessPreference
import rikka.preference.PreferenceProvider
class ServiceSettingsProvider : PreferenceProvider() {
@@ -11,4 +12,15 @@ class ServiceSettingsProvider : PreferenceProvider() {
Context.MODE_PRIVATE
)
}
companion object {
fun createSharedPreferencesFromContext(context: Context): SharedPreferences {
return when ( context ) {
is BaseService, is TunService ->
context.getSharedPreferences(Constants.SERVICE_SETTING_FILE_NAME, Context.MODE_PRIVATE)
else ->
MultiProcessPreference(context, context.packageName + Constants.SETTING_PROVIDER_SUFFIX)
}
}
}
}
@@ -190,7 +190,7 @@ class TunService : VpnService(), CoroutineScope by MainScope() {
addAddress(PRIVATE_VLAN4_CLIENT, PRIVATE_VLAN4_SUBNET)
if (settings.get(ServiceSettings.IPV6_SUPPORT))
addRoute(PRIVATE_VLAN6_CLIENT, 126)
addAddress(PRIVATE_VLAN6_CLIENT, 126)
return this
}
@@ -3,15 +3,13 @@ package com.github.kr328.clash.service.settings
import android.content.Context
import android.content.SharedPreferences
import com.github.kr328.clash.service.Constants
import com.github.kr328.clash.service.ServiceSettingsProvider
import rikka.preference.MultiProcessPreference
class ServiceSettings(preference: SharedPreferences) :
BaseSettings(preference) {
constructor(context: Context) : this(
MultiProcessPreference(
context,
context.packageName + Constants.SETTING_PROVIDER_SUFFIX
)
ServiceSettingsProvider.createSharedPreferencesFromContext(context)
)
companion object {