diff --git a/app/src/main/java/com/github/kr328/clash/remote/Broadcasts.kt b/app/src/main/java/com/github/kr328/clash/remote/Broadcasts.kt index 9be7026bf..184599a2d 100644 --- a/app/src/main/java/com/github/kr328/clash/remote/Broadcasts.kt +++ b/app/src/main/java/com/github/kr328/clash/remote/Broadcasts.kt @@ -100,6 +100,7 @@ class Broadcasts(private val context: Application) { }) clashRunning = StatusClient(context).currentProfile() != null + registered = true } catch (e: Exception) { Log.w("Register global receiver: $e", e) } @@ -113,6 +114,7 @@ class Broadcasts(private val context: Application) { context.unregisterReceiver(broadcastReceiver) clashRunning = false + registered = false } catch (e: Exception) { Log.w("Unregister global receiver: $e", e) } diff --git a/app/src/main/java/com/github/kr328/clash/remote/Remote.kt b/app/src/main/java/com/github/kr328/clash/remote/Remote.kt index d8b249d1b..5bd35029f 100644 --- a/app/src/main/java/com/github/kr328/clash/remote/Remote.kt +++ b/app/src/main/java/com/github/kr328/clash/remote/Remote.kt @@ -30,16 +30,16 @@ object Remote { fun launch() { ApplicationObserver.attach(Global.application) + broadcasts.register() + ApplicationObserver.onVisibleChanged { if(it) { Log.d("App becomes visible") service.bind() - broadcasts.register() } else { Log.d("App becomes invisible") service.unbind() - broadcasts.unregister() } }