From 2cb198708006e9a5c6a5f7f2b67c859ab356e936 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Mon, 23 Mar 2026 19:52:23 +0800 Subject: [PATCH] Fix resource leaks in service startup error cleanup --- .../main/java/io/nekohasekai/sfa/bg/BoxService.kt | 13 +++++++++++-- .../sfa/compose/screen/profile/EditProfileRoute.kt | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt b/app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt index 1761e65..a354866 100644 --- a/app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt +++ b/app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt @@ -162,7 +162,6 @@ class BoxService(private val service: Service, private val platformInterface: Pl android.Manifest.permission.ACCESS_BACKGROUND_LOCATION } if (!service.hasPermission(wifiPermission)) { - closeService() stopAndAlert(Alert.RequestLocationPermission) return } @@ -243,7 +242,6 @@ class BoxService(private val service: Service, private val platformInterface: Pl android.Manifest.permission.ACCESS_BACKGROUND_LOCATION } if (!service.hasPermission(wifiPermission)) { - closeService() stopAndAlert(Alert.RequestLocationPermission) return } @@ -311,6 +309,16 @@ class BoxService(private val service: Service, private val platformInterface: Pl private suspend fun stopAndAlert(type: Alert, message: String? = null) { Settings.startedByUser = false + val pfd = fileDescriptor + if (pfd != null) { + pfd.close() + fileDescriptor = null + } + DefaultNetworkMonitor.stop() + if (::commandServer.isInitialized) { + closeService() + commandServer.close() + } withContext(Dispatchers.Main) { if (receiverRegistered) { service.unregisterReceiver(receiver) @@ -321,6 +329,7 @@ class BoxService(private val service: Service, private val platformInterface: Pl callback.onServiceAlert(type.ordinal, message) } status.value = Status.Stopped + service.stopSelf() } } diff --git a/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileRoute.kt b/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileRoute.kt index a9a8cbc..424319d 100644 --- a/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileRoute.kt +++ b/app/src/main/java/io/nekohasekai/sfa/compose/screen/profile/EditProfileRoute.kt @@ -1,5 +1,6 @@ package io.nekohasekai.sfa.compose.screen.profile +import android.net.Uri import androidx.compose.animation.AnimatedContentTransitionScope import androidx.compose.animation.core.tween import androidx.compose.runtime.Composable @@ -10,7 +11,6 @@ import androidx.navigation.NavType import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController -import android.net.Uri import androidx.navigation.navArgument @Composable