我使用一項服務,在這項服務中,我有一個計時器,它會將每分鐘的消息發送到我的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