我目前遇到了集成AlarmManager和BroadcastReceiver的問題。在後臺運行的Android AlarmManager和BroadcastReceiver服務
我的應用程序,我正在運行一個後臺服務,運行無論該應用程序是否運行。我想我得到這部分工作正常。後臺服務保留一個根據用戶位置而變化的數組。但是,每天早上8點,我希望應用程序將數組變量重置爲默認值。經過在線觀看後,似乎要通過AlarmManager(每8點鐘啓動一次任務)和使用BroadcastReceiver(接收警報並執行任務)來完成此任務。
所以基本上代碼是這樣的:
public class BackgroundService extends Service {
private ArrayList thisArray;
private BroadcastReceiver thisReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
setArrayToDefault();
}
}
@Override
public void onCreate(){
super.onCreate();
Calendar cal = new GregorianCalendar();
cal.add(Calendar.MINUTE, 2); //example
this.registerReceiver(thisReceiver, new IntentFilter("BackgroundService"));
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), ONE_MINUTE, "what to put here?"); //example, repeat every minute
}
private void setArrayToDefault(){
//here, the array will be changed back to default values
}
}
我的主要問題是如何設置AlarmManager調用thisReceiver每次它的設置。任何想法?我的方法是否正確?
那麼你認爲我應該如何解決這個問題?基本上應用程序的一部分是它將獲取用戶的位置(可能每隔30分鐘,無論用戶當前是否在運行應用程序)。如果用戶當前位於陣列中指定的位置之一併啓用了通知,則會向用戶發送通知(並且在當天剩餘時間內不會再發送通知)。第二天,所有通知將被重新啓用(因此需要AlarmManager)。 – ImpStudent
@ImpStudent:「(可能每隔30分鐘,無論用戶是否正在運行應用程序)」 - 使用AlarmManager和我的LocationPoller,因此您無需將服務始終保存在內存中 - https://github.com/commonsguy/cwac-locpoll - 你引用的所有東西都應該保存在數據庫或其他持久存儲中。 – CommonsWare
好吧我做了更多的閱讀,它似乎實際上可以做到我的計劃沒有使用後臺服務。感謝您的指導。 – ImpStudent