运行 仅当 phone 正在使用时才提供后台服务

Run background service only when phone is in use

我正在尝试制作一个 android 应用程序,该应用程序会触发后台意图以大约每 2 分钟使用 post 请求“ping”服务器(默认情况下,间隔是用户可配置的).

绝对 需要在 phone 未处于活动状态时避免服务 运行,我需要它不延迟服务,例如一个 AlarmManager 会。如果它试图在 phone 屏幕关闭时触发,我希望它静静地失败。

这可能吗?如果可以,我需要查看 API 的哪些部分才能开始使用它?

请注意,我知道问好问题的规则。我没有列出我尝试过的方法的原因是我不知道从哪里开始。

您需要创建一个广播接收器来收听系统发送的意图。类似于下面的代码,但已根据您的解决方案进行了调整

@Override
public void onReceive(final Context context, final Intent intent) {
    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
        // do whatever you need to do here
    } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
        // and do whatever you need to do here
    }
}

可以在此处找到有关广播接收器的更多信息:https://developer.android.com/guide/components/broadcasts

希望这对您来说是一个好的起点。