我写了一个类来管理设置和取消警报(通过AlarmManager)。为了方便取消警报,我已将设置警报的意图链接到“名称”,并将其存储在HashMap中,如下所示:
private HashMap<String, PendingIntent> alarmIntentsMap = new HashMap<String, PendingIntent>();
设置闹钟的方法示例如下:
public void AddServiceAlarm(Context context, Intent intent, int type, long triggerAtMillies, long intervalMillies, String name) throws Exception
{
alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent = null;
pendingIntent = PendingIntent.getService(context, 0, intent, 0);
alarmManager.setRepeating(type, triggerAtMillies, intervalMillies, pendingIntent);
alarmIntentsMap.put(name, pendingIntent);
}
取消警报的方法是:
public void CancelAlarm(Context context, String name)
{
alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(alarmIntentsMap.get(name));
}
这些方法使用全局:
private AlarmManager alarmManager;
至少对我而言,这似乎是一种在系统中启动和取消警报的优雅方式。在地图中存储对PendingIntents的引用是不是很糟糕?这会被认为是Android中的不良做法吗?我对Android不太熟悉并且很想知道。