Android 只有在打开internet连接时,如何每天启动后台服务?

Android 只有在打开internet连接时,如何每天启动后台服务?,android,service,broadcastreceiver,background-service,Android,Service,Broadcastreceiver,Background Service,我希望当我在一天中的任何时间打开互联网连接时,后台服务会自动启动。只要写一个简单的bash来ping google一次,如果你得到ping,那么你的互联网是在线的。启动你的程序。如果没有internet,请停止该程序 例如: #!/bin/bash if ping -q -c 1 -W 1 google.com >/dev/null; then sudo systemctl start YourProgram else sudo systemctl

我希望当我在一天中的任何时间打开互联网连接时,后台服务会自动启动。

只要写一个简单的bash来ping google一次,如果你得到ping,那么你的互联网是在线的。启动你的程序。如果没有internet,请停止该程序

例如:

#!/bin/bash

if ping -q -c 1 -W 1 google.com >/dev/null; 
then
sudo systemctl start YourProgram                   
else
sudo systemctl stop YourProgram
fi

现在只需根据需要修改代码。您甚至可以将其放置在循环中。

使用WorkManagerPeriodicWorkRequest以及约束,如下所示:

    Constraints myConstraints = 
        new Constraints.Builder().
        setRequiredNetworkType(NetworkType.CONNECTED).
        build(); 

    PeriodicWorkRequest mywork = 
        new PeriodicWorkRequest.Builder(MyWorker.class, 24, TimeUnit.HOURS).
        setConstraints(myConstraints).build();

    WorkManager.getInstance().
        enqueue(mywork);

这不是我的意思,我想在一天中的任何时间打开互联网连接时启动后台服务。