Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 前台服务运行时,设备是否进入睡眠模式_Android_Foreground Service_Doze - Fatal编程技术网

Android 前台服务运行时,设备是否进入睡眠模式

Android 前台服务运行时,设备是否进入睡眠模式,android,foreground-service,doze,Android,Foreground Service,Doze,我的应用程序需要在后台长时间运行,并定期向服务器发送数据。我尝试了AlarmManager,但它在打瞌睡模式下受到限制。我接下来想到的是前台服务 在前台服务运行时,设备是否进入睡眠模式 如果设备进入打盹模式,在前台服务运行时,互联网连接是否受到限制?这对我来说非常有效,使用一些模拟器和Android 6.0和7.1真实设备测试了几个小时的连续运行,网络连接从未丢失: 在Pause上的主活动中,我获取了一个部分唤醒锁,并启动了一个具有STARTFOREGROUND_操作意图的服务,该服务调用STA

我的应用程序需要在后台长时间运行,并定期向服务器发送数据。我尝试了AlarmManager,但它在打瞌睡模式下受到限制。我接下来想到的是前台服务

在前台服务运行时,设备是否进入睡眠模式


如果设备进入打盹模式,在前台服务运行时,互联网连接是否受到限制?

这对我来说非常有效,使用一些模拟器和Android 6.0和7.1真实设备测试了几个小时的连续运行,网络连接从未丢失:

在Pause上的主活动中,我获取了一个部分唤醒锁,并启动了一个具有STARTFOREGROUND_操作意图的服务,该服务调用STARTFOREGROUND并显示一个通知

在Activity onResume上,WakeLock被释放,服务以STOPFOREGROUND_操作意图停止,服务本身调用STOPFOREGROUND&stopSelf

同时也可避免在按Back键时破坏活动:

 @Override
    public void onBackPressed() {
         moveTaskToBack(true);
    }
当然,我提供了一个菜单选项来停止后台进程并完成活动

我的定期询问internet服务器的代码放在活动中,它使用计时器


希望能有所帮助

我没有完全理解您的解决方案。Android打盹模式忽略所有唤醒锁。不适用于有活动前台服务+通知的我。我已经在几个真实的设备上进行了测试。这里进行了深入的讨论:即使使用前台服务,AlarmManager的setExact和SetExactAndAllowHileId也不会在打瞌睡模式下工作。设备唤醒后,AlarmManager会触发。setAlarm正在打瞌睡模式下工作,但它在状态栏上显示报警图标。是否有其他方法来安排服务中的定期任务?似乎为了避免进入打盹模式,前台服务必须显示通知。。。