我有收集數據的服務,並且每個小時服務都需要將這些數據發送到我的服務器。我知道他們有很多可用於安排任務的解決方案,但在我的情況下,關於電池消耗和資源利用率的最有效方法是什麼?如何有效地安排我的服務中的任務?
也是我的服務能夠被停止,而當我的服務已停止,那麼它不能再發送任何數據(所以alarmmanager縫是不是最好的方法,因爲它會據我所知重新啓動我的服務)
我有收集數據的服務,並且每個小時服務都需要將這些數據發送到我的服務器。我知道他們有很多可用於安排任務的解決方案,但在我的情況下,關於電池消耗和資源利用率的最有效方法是什麼?如何有效地安排我的服務中的任務?
也是我的服務能夠被停止,而當我的服務已停止,那麼它不能再發送任何數據(所以alarmmanager縫是不是最好的方法,因爲它會據我所知重新啓動我的服務)
通過AlaramManager
進行安排是完全正常的,因爲您也可以取消計劃任務。
它可能看起來像這樣
AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(getApplicationContext(), YourService.class);
alarm.set(
AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + DateUtils.HOUR_IN_MILLIS,
PendingIntent.getService(getApplicationContext(), 11, intent, PendingIntent.FLAG_UPDATE_CURRENT)
);
,並取消它可以像這樣
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent myIntent = new Intent(getApplicationContext(), YourService.class);
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 11, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pendingIntent);
的11
做的是爲PendingIntent
中,你可以得到它的訪問標識符。
使用單獨的報警管理是不夠的。
你應該把你的數據時,networkconnection已經被激活使用,因爲從「空閒/未使用」移位WiFi或3G/4G無線電臺,以「數據發送/接收」是非常昂貴的能源。如果設備已經發送/接收數據,則不需要額外的能源成本來激活收音機。
可以註冊,通知您對當前的網絡狀態應用的廣播接收機。
欲瞭解更多詳情,請參閱
您的轉移戰略將是
任何形式的「任務」,如果你的服務停止你實現將需要明確停止就像報警經理想,但你應該考慮的jobscheduler – tyczj