diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/App.kt b/mobile/src/main/java/be/mygod/vpnhotspot/App.kt index 6b8c0ed4..64502e95 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/App.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/App.kt @@ -12,6 +12,7 @@ import android.preference.PreferenceManager import androidx.core.content.getSystemService import be.mygod.vpnhotspot.util.DeviceStorageApp import be.mygod.vpnhotspot.util.Event0 +import be.mygod.vpnhotspot.util.RootSession import com.crashlytics.android.Crashlytics import io.fabric.sdk.android.Fabric @@ -39,6 +40,11 @@ class App : Application() { ServiceNotification.updateNotificationChannels() } + override fun onTrimMemory(level: Int) { + super.onTrimMemory(level) + if (level >= TRIM_MEMORY_RUNNING_CRITICAL) RootSession.trimMemory() + } + lateinit var deviceStorage: Application val handler = Handler() val pref: SharedPreferences by lazy { PreferenceManager.getDefaultSharedPreferences(deviceStorage) } diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/util/RootSession.kt b/mobile/src/main/java/be/mygod/vpnhotspot/util/RootSession.kt index 578c32ad..136f1fd0 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/util/RootSession.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/util/RootSession.kt @@ -46,6 +46,12 @@ class RootSession : AutoCloseable { instance.haltTimeout() return instance.Transaction() } + + fun trimMemory() = monitor.withLock { + val instance = instance ?: return + instance.haltTimeout() + instance.close() + } } class UnexpectedOutputException(msg: String) : RuntimeException(msg)