Skip to content

Commit cddcd84

Browse files
committed
optimize
1 parent 912de10 commit cddcd84

File tree

13 files changed

+53
-39
lines changed

13 files changed

+53
-39
lines changed

app/src/main/java/io/nekohasekai/sagernet/database/DataStore.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ object DataStore : OnPreferenceDataStoreChangeListener {
113113
var remoteDns by configurationStore.string(Key.REMOTE_DNS) { "https://dns.google/dns-query" }
114114
var directDns by configurationStore.string(Key.DIRECT_DNS) { "https://223.5.5.5/dns-query" }
115115
var enableDnsRouting by configurationStore.boolean(Key.ENABLE_DNS_ROUTING) { true }
116-
var enableFakeDns by configurationStore.boolean(Key.ENABLE_FAKEDNS)
116+
var enableFakeDns by configurationStore.boolean(Key.ENABLE_FAKEDNS) { true }
117117

118118
var rulesProvider by configurationStore.stringToInt(Key.RULES_PROVIDER)
119119
var logLevel by configurationStore.stringToInt(Key.LOG_LEVEL)
@@ -156,7 +156,7 @@ object DataStore : OnPreferenceDataStoreChangeListener {
156156
var connectionTestConcurrent by configurationStore.int("connectionTestConcurrent") { 5 }
157157
var alwaysShowAddress by configurationStore.boolean(Key.ALWAYS_SHOW_ADDRESS)
158158

159-
var tunImplementation by configurationStore.stringToInt(Key.TUN_IMPLEMENTATION) { TunImplementation.MIXED }
159+
var tunImplementation by configurationStore.stringToInt(Key.TUN_IMPLEMENTATION) { TunImplementation.GVISOR }
160160
var profileTrafficStatistics by configurationStore.boolean(Key.PROFILE_TRAFFIC_STATISTICS) { true }
161161

162162
var yacdURL by configurationStore.string("yacdURL") { "http://127.0.0.1:9090/ui" }

app/src/main/java/io/nekohasekai/sagernet/database/SagerDatabase.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ abstract class SagerDatabase : RoomDatabase() {
3434
SagerNet.application.getDatabasePath(Key.DB_PROFILE).parentFile?.mkdirs()
3535
Room.databaseBuilder(SagerNet.application, SagerDatabase::class.java, Key.DB_PROFILE)
3636
// .addMigrations(*SagerDatabase_Migrations.build())
37+
.setJournalMode(JournalMode.TRUNCATE)
3738
.allowMainThreadQueries()
3839
.enableMultiInstanceInvalidation()
3940
.fallbackToDestructiveMigration()

app/src/main/java/io/nekohasekai/sagernet/database/preference/PublicDatabase.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ abstract class PublicDatabase : RoomDatabase() {
1616
val instance by lazy {
1717
SagerNet.application.getDatabasePath(Key.DB_PROFILE).parentFile?.mkdirs()
1818
Room.databaseBuilder(SagerNet.application, PublicDatabase::class.java, Key.DB_PUBLIC)
19+
.setJournalMode(JournalMode.TRUNCATE)
1920
.allowMainThreadQueries()
2021
.enableMultiInstanceInvalidation()
2122
.fallbackToDestructiveMigration()

app/src/main/java/io/nekohasekai/sagernet/ktx/Utils.kt

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -248,16 +248,19 @@ fun Fragment.needReload() {
248248

249249
fun Fragment.needRestart() {
250250
snackbar(R.string.need_restart).setAction(R.string.apply) {
251+
triggerFullRestart(requireContext())
252+
}.show()
253+
}
254+
255+
fun triggerFullRestart(ctx: Context) {
256+
runOnDefaultDispatcher {
251257
SagerNet.stopService()
252-
val ctx = requireContext()
253-
runOnDefaultDispatcher {
254-
delay(500)
255-
SagerDatabase.instance.close()
256-
PublicDatabase.instance.close()
257-
Executable.killAll(true)
258+
delay(500)
259+
Executable.killAll(true)
260+
runOnMainDispatcher {
258261
ProcessPhoenix.triggerRebirth(ctx, Intent(ctx, MainActivity::class.java))
259262
}
260-
}.show()
263+
}
261264
}
262265

263266
fun Context.getColour(@ColorRes colorRes: Int): Int {

app/src/main/java/io/nekohasekai/sagernet/ui/AboutFragment.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ class AboutFragment : ToolbarFragment(R.layout.layout_about) {
266266
}
267267
}
268268
} catch (e: Exception) {
269+
Logs.w(e)
269270
runOnMainDispatcher {
270271
Toast.makeText(app, e.readableMessage, Toast.LENGTH_SHORT).show()
271272
}

app/src/main/java/io/nekohasekai/sagernet/ui/BackupFragment.kt

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import com.jakewharton.processphoenix.ProcessPhoenix
1616
import io.nekohasekai.sagernet.BuildConfig
1717
import io.nekohasekai.sagernet.R
1818
import io.nekohasekai.sagernet.SagerNet
19+
import io.nekohasekai.sagernet.bg.Executable
1920
import io.nekohasekai.sagernet.database.*
2021
import io.nekohasekai.sagernet.database.preference.KeyValuePair
2122
import io.nekohasekai.sagernet.database.preference.PublicDatabase
@@ -65,19 +66,11 @@ class BackupFragment : NamedFragment(R.layout.layout_backup) {
6566

6667
binding.resetSettings.setOnClickListener {
6768
MaterialAlertDialogBuilder(requireContext()).setTitle(R.string.confirm)
68-
.setMessage(R.string.reset_settings)
69+
.setMessage(R.string.reset_settings_message)
6970
.setNegativeButton(R.string.no, null)
7071
.setPositiveButton(R.string.yes) { _, _ ->
71-
runOnDefaultDispatcher {
72-
DataStore.configurationStore.reset()
73-
delay(500)
74-
runOnMainDispatcher {
75-
ProcessPhoenix.triggerRebirth(
76-
requireContext(),
77-
Intent(requireContext(), MainActivity::class.java)
78-
)
79-
}
80-
}
72+
DataStore.configurationStore.reset()
73+
triggerFullRestart(requireContext())
8174
}
8275
.show()
8376
}
@@ -251,9 +244,7 @@ class BackupFragment : NamedFragment(R.layout.layout_backup) {
251244
import.backupRules.isChecked,
252245
import.backupSettings.isChecked
253246
)
254-
ProcessPhoenix.triggerRebirth(
255-
requireContext(), Intent(requireContext(), MainActivity::class.java)
256-
)
247+
triggerFullRestart(requireContext())
257248
}.onFailure {
258249
Logs.w(it)
259250
onMainDispatcher {

app/src/main/java/io/nekohasekai/sagernet/ui/LogcatFragment.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ import android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
99
import android.text.style.ForegroundColorSpan
1010
import android.view.MenuItem
1111
import android.view.View
12-
import android.widget.ScrollView
12+
import android.view.ViewGroup
1313
import androidx.appcompat.widget.Toolbar
1414
import androidx.core.view.ViewCompat
15+
import androidx.core.view.doOnLayout
1516
import io.nekohasekai.sagernet.R
1617
import io.nekohasekai.sagernet.databinding.LayoutLogcatBinding
1718
import io.nekohasekai.sagernet.ktx.*
@@ -41,7 +42,6 @@ class LogcatFragment : ToolbarFragment(R.layout.layout_logcat),
4142
ViewCompat.setOnApplyWindowInsetsListener(binding.root, ListListener)
4243

4344
reloadSession()
44-
// TODO new logcat
4545
}
4646

4747
private fun getColorForLine(line: String): ForegroundColorSpan {
@@ -76,8 +76,15 @@ class LogcatFragment : ToolbarFragment(R.layout.layout_logcat),
7676
}
7777
binding.textview.text = span
7878

79-
binding.scroolview.post {
80-
binding.scroolview.fullScroll(ScrollView.FOCUS_DOWN)
79+
// 阻止自动滚动/焦点干扰
80+
binding.scroolview.descendantFocusability = ViewGroup.FOCUS_BLOCK_DESCENDANTS
81+
binding.textview.isFocusable = false
82+
binding.textview.isFocusableInTouchMode = false
83+
binding.textview.clearFocus()
84+
85+
// 等 textview 完成最终 layout 再滚动到底部
86+
binding.textview.doOnLayout {
87+
binding.scroolview.scrollTo(0, binding.textview.height)
8188
}
8289
}
8390

app/src/main/res/values-zh-rCN/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,4 +493,5 @@
493493
<string name="update_dialog_message">当前版本:%1$s\n可升级版本:%2$s\n是否前往下载?</string>
494494
<string name="check_update_no">检查成功,但没有更新。</string>
495495
<string name="reset_settings">恢复默认设置</string>
496+
<string name="reset_settings_message">恢复默认设置,但节点、分组等数据将保留。如需完全清除数据,请在系统设置中直接清除应用数据。</string>
496497
</resources>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,4 +573,5 @@
573573
<string name="update_dialog_message">Current version: %1$s\nAvailable version: %2$s\nDo you want to download it?</string>
574574
<string name="check_update_no">Check successful, but no updates.</string>
575575
<string name="reset_settings">Restore default settings</string>
576+
<string name="reset_settings_message">Restore default settings, but data such as nodes and groups will be retained. To completely clear data, clear application data directly in the system settings.</string>
576577
</resources>

app/src/main/res/xml/global_preferences.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
app:title="@string/service_mode"
3030
app:useSimpleSummaryProvider="true" />
3131
<moe.matsuri.nb4a.ui.SimpleMenuPreference
32-
app:defaultValue="2"
32+
app:defaultValue="0"
3333
app:entries="@array/tun_implementation"
3434
app:entryValues="@array/int_array_3"
3535
app:icon="@drawable/ic_baseline_flip_camera_android_24"
@@ -181,6 +181,7 @@
181181
app:summary="@string/dns_routing_message"
182182
app:title="@string/enable_dns_routing" />
183183
<SwitchPreference
184+
app:defaultValue="true"
184185
app:icon="@drawable/ic_action_lock"
185186
app:key="enableFakeDns"
186187
app:summary="@string/fakedns_message"

0 commit comments

Comments
 (0)