我使用一项服务,在这项服务中,我有一个计时器,它会将每分钟的消息发送到我的TCP/IP服务器。Android:屏幕锁定时服务停止,为什么?
public void keepAlive() {
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
try {
Gson gson = new Gson();
String message = gson.toJson(new StillAlive(Mode.STILLALIVE));
sendMessage(message);
Log.d("TCP-SEND", message);
} catch(Exception e) {
Log.e("TCP1", e.getMessage());
}
}
}, 60000, 60000);
}
但是当我的手机锁。或者我按下按钮关闭显示屏,我的服务停止发送这些消息。
我不确定的是,如果停止服务,关闭显示屏或者由于任何原因我不知道计时器停止。
有没有人知道如果计时器在这种情况下停止?或者服务停止?
希望得到一些帮助! :-)
这是无线/移动数据被关闭以节省电池。在移动设备上,不是消耗电池的数据量,这实际上是天线开机的时间量。如果您确实需要每分钟检查一次服务器上的内容,请改用Google Cloud Messaging。 Google云消息传递不会增加电池使用量,但如果您使用技术假定您使其工作至少会消耗总电池使用时间的20%(即使未检测到更改)。对大多数人来说,20%是很多的,特别是对于一个应用程序。请使用Google Cloud Messagi –
@StephanBranczyk:我的问题是,我需要发送这些消息来告诉我的TCP服务器,连接仍在。我也可以每隔5分钟发送一次,或者类似的东西,如果这可行的话。但是我需要在已知的时间范围内发送消息。这可能吗? – progNewbie
@StephanBranczyk我不知道如何WhatsApp /电报等处理这个问题。他们是否使用谷歌云消息传递? – progNewbie