你真的需要每分鐘一新的服務嗎?我想你想開始單一服務。該服務每分鐘檢查一次服務器並以某種方式報告成功或錯誤?您希望簡單的始終以定期行動運行服務,而不是定期啓動服務。在這種情況下,啓動新服務會消耗比檢查本身更多的資源。
只要確保服務保持運行。直到你從它調用stopSelf()並且開始活動並沒有停止它,情況可能是這樣。你可能想要運行它
private ping() {
// periodic action here.
scheduleNext();
}
private scheduleNext() {
mHandler.postDelayed(new Runnable() {
public void run() { ping(); }
}, 60000);
}
int onStartCommand(Intent intent, int x, int y) {
mHandler = new android.os.Handler();
ping();
return STICKY;
}
您可能只想定期檢查Wifi連接或連接存在。也許停止檢查,當你已經知道問題並正在解決它。您可能想要使用Service中的startForeground()來啓動一些活動來控制它並顯示結果。
獲取服務器更改通知的最佳方式是使用[GCM](http://developer.android.com/google/gcm/index.html),因此您不必保留設備清醒和混亂的電池。 – zapl
是的。但是,如果我要在電話上做到這一點。這是最好的方法嗎? – Zer0
如果那是你必須做的,是的。一個簡單的intent服務不需要處理ondestroy,它只是在處理完縮進後關閉。 – zapl