我的应用程序需要在后台运行很长时间,并定期将数据发送到服务器。我尝试了警报管理器,但它在打瞌睡模式下受到限制。我接下来想到的是前台服务。
设备是否在前台服务运行时进入打瞌睡模式?
如果设备进入打瞌睡模式,则在前台服务运行时互联网连接是否受到限制?
这对我非常有效,测试了一些模拟器和Android 6.0和7.1真实设备的连续运行数小时,网络连接从未丢失:
在 Main Activity onPause 中,我获取了部分唤醒锁,并以STARTFOREGROUND_ACTION意图启动服务,该服务调用 startForeground 并显示通知。
在 Activity onResume 上,WakeLock 被释放,服务以STOPFOREGROUND_ACTION意图停止,服务本身调用 stopForeground & stopSelf。
并且还可以避免在按后退键时销毁活动:
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
当然,我提供了一个菜单选项来停止后台操作并完成活动
我定期询问互联网服务器的代码放置在活动中,它使用计时器。
希望会有所帮助