我希望在我的应用中发出警报,即使我的应用已关闭,也会每10分钟发送一次通知 并在2小时后停止 我真的需要它
我想要一位专业的警报来帮助我,这是我的全科医生我应该明天提交
任何帮助将不胜感激
答案 0 :(得分:6)
我已经写了一篇关于如何使用AlarmManager的非常详细的答案。你可以阅读它here。
关于您的特定情况。您可以使用cancel()方法向调度程序添加stopScheduling
方法:
public class TaskScheduler {
PendingIntent mPendingIntent;
AlarmManager mAlarmManager;
public static void startScheduling(Context context) {
Intent intent = new Intent(context, MyReceiver.class);
mPendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
mAlarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), 600, pendingIntent);
}
public static void stopScheduling() {
mAlarmManager.cancel(mPendingIntent);
}
}
因此,当您想要停止计划时,您可以调用该方法。
现在我不知道任何简单的方法会导致AlarmManager
在2小时后自行停止,但是您可以编写另一个调度程序,该调度程序将在2小时后启动以删除第一个调度程序。
我建议你一步一步 。首先尝试实现一个简单的警报并使用参数来查看调度的工作方式,然后尝试删除此警报。一旦这项工作,您将轻松完成其余的工作,因为它只是一些基本的编程任务。另请阅读我撰写的详细答案here,因为它提供了设置基本警报所需的所有信息。
答案 1 :(得分:4)
答案 2 :(得分:2)
Tim和Amokrane说,AlarmManager是你的朋友;)
http://developer.android.com/reference/android/app/AlarmManager.html
示例:
// get a Calendar object with current time
Calendar cal = Calendar.getInstance();
// add 5 minutes to the calendar object
cal.add(Calendar.MINUTE, 5);
Intent intent = new Intent(ctx, AlarmReceiver.class);
intent.putExtra("alarm_message", "O'Doyle Rules!");
// In reality, you would want to have a static variable for the request code instead of 192837
PendingIntent sender = PendingIntent.getBroadcast(this, 192837, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Get the AlarmManager service
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);