【发布时间】:2011-08-27 02:07:38
【问题描述】:
我目前在集成 AlarmManager 和 BroadcastReceiver 时遇到问题。
我是我的应用程序,我正在运行一个后台服务,无论该应用程序是否正在运行。我想我让这部分工作正常。后台服务保留一个根据用户位置更改的数组。但是,每天早上 8:00,我希望应用程序将数组变量重置为默认值。在网上看了很多之后,似乎这样做的方法是通过 AlarmManager(每上午 8:00 启动任务)和使用 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。任何想法?我的方法正确吗?
【问题讨论】:
标签: android broadcastreceiver alarmmanager