Reduce running of background tasks on sleep mode

This commit is contained in:
Vladimir Stoilov
2023-04-19 17:47:16 +02:00
parent 4784799541
commit 7e09245540
6 changed files with 34 additions and 9 deletions

View File

@@ -41,10 +41,13 @@ serviceLoop:
for {
trigger := false
timeout := 15 * time.Second
if !Online() {
timeout = time.Second
var ticker *time.Ticker
if Online() {
ticker = monitorNetworkChangeOnlineTicker
} else {
ticker = monitorNetworkChangeOfflineTicker
}
// wait for trigger
select {
case <-ctx.Done():
@@ -54,7 +57,7 @@ serviceLoop:
// triggers the networkChangeCheck this way. If we would set
// trigger == true we would trigger the online check again
// resulting in a loop of pointless checks.
case <-time.After(timeout):
case <-ticker.C:
trigger = true
}

View File

@@ -3,8 +3,20 @@ package netenv
import (
"github.com/safing/portmaster-android/go/app_interface"
"net"
"time"
)
var (
monitorNetworkChangeOnlineTicker = time.NewTicker(time.Second)
monitorNetworkChangeOfflineTicker = time.NewTicker(time.Second)
)
func init() {
// Network change event is monitored by the android system.
monitorNetworkChangeOnlineTicker.Stop()
monitorNetworkChangeOfflineTicker.Stop()
}
func osGetInterfaceAddrs() ([]net.Addr, error) {
list, err := app_interface.GetNetworkAddresses()
if err != nil {

View File

@@ -4,6 +4,12 @@ package netenv
import (
"net"
"time"
)
var (
monitorNetworkChangeOnlineTicker = time.NewTicker(15 * time.Second)
monitorNetworkChangeOfflineTicker = time.NewTicker(time.Second)
)
func osGetInterfaceAddrs() ([]net.Addr, error) {