Articles of alarmmanager

Android AlarmManager触发每一轮“10分钟”

我在我的应用程序中使用AlarmManager,如下所示: alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), AlarmManager.INTERVAL_HALF_DAY, intent); 我期望在每个触发器的12到24小时之间触发警报。 但是,特别是在HTC设备上的行为相当奇怪: 每次触发警报时,我们都会向服务器发送HTTP请求。 在所有设备上,随着时间的推移,我们会看到请求统一到服务器,但在HTC设备上每10分钟(XX:10,XX:20,……)都会出现峰值: 这些尖峰的原因是什么? 为什么它只能在HTC设备上?

关闭应用程序后取消Android警报

我有一个AlarmManager的问题,我设置了调度重复警报的代码,在我运行应用程序后,警报运行正常。 即使我单击“主页”按钮(并且应用程序暂停),警报仍会按其间隔运行。 问题是如果我打开任务管理器并强制关闭应用程序,则警报停止运行。 这是正常的行为,有没有办法避免这种情况并在关闭应用程序后保持警报运行? 代码如下 – 该方法由ApplicationContext类onCreate()调用。 private void scheduleAlarm() { if (alarmScheduled == true) { return; } // we only need to schedule once. int alarmInterval = Def.pref(getApplicationContext()).getInt(“alarmInterval”, 30); final Intent intent = new Intent(getApplicationContext(), CollectorAlarmReceiver.class); final PendingIntent pending = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0); AlarmManager alarmMgr = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); alarmMgr.cancel(pending); // cancel others. alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, […]

Job Scheduler与后台服务

我有一个应用程序,其functionA应该每分钟在后台运行。 functionA是应用程序应该连接到数据库,读取一些数据然后获取设备的当前位置,并根据它们检查条件,如果条件为真,它应该向用户发送状态栏通知,以便用户点击通知,将显示应用程序的UI并发生一些事情。 这个后台任务应该每分钟都运行一次,无论应用程序是否被使用,关闭,终止(例如facebook或Whatsapp向我们显示通知,无论它们是否在应用程序堆栈中)。 现在我已经搜索并发现Android提供Job Scheduler , 后台服务 , AlarmManager和处理程序 。 但是我越了解他们,这些陈述对我来说就越矛盾。 关于处理程序我已经读过它们不存在长时间延迟,并将在系统重启后终止。 所以他们不适合我的任务。 但是AlarmManager似乎是这个问题的一个很好的候选者,因为在允许的情况下它们甚至在系统重启后也存在,并且可以重新运行应用程序。 但在Android文档中,Alarm Manager旨在用于必须在特定时间运行的任务(如闹钟)。 但我的任务必须每分钟运行一次。 然后是后台服务。 这更像是我在阅读后在后台下载的任务,而不是用于我已经解释过的事情。 JobScheduler似乎不是为了必须永久完成的任务,而是为了满足特定约束的任务,如空闲或没有网络……那么你建议使用哪些(或其他的,如果它们存在)对于我在第一部分中解释的任务

如何检测通知是否已被解除?

Android中是否有任何方法可以检测用户何时向左侧滑动通知并将其删除? 我正在使用闹钟管理器来设置重复警报,我需要在用户取消通知时停止重复警报。 这是我的代码: 设置重复提醒: AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), repeatFrequency, displayIntent); 我的通知代码: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Get the notification ID. int notifID = getIntent().getExtras().getInt(“Reminder_Primary_Key”); //Get the name of the reminder. String reminderName = getIntent().getExtras().getString(“Reminder_Name”); //PendingIntent stores the Activity that should be launched when the user taps the notification. Intent i […]

应用程序被Android或任务杀手杀死后如何保存预定的警报?

安排警报的代码。 PendingIntent sender = PendingIntent.getBroadcast(this, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP, time, sender); 它的工作正常,但当我在任务杀手中杀死我的应用程序时,我丢失了我的预定警报。 如何解决这个问题呢?

识别并取消发送到AlarmManager的警报

如果我使用AlarmManager来安排警报(应该发送的PendintIntent),我如何在以后识别该警报以取消它? 我可以取消我的应用安排的所有闹钟吗?

取消另一个pendingintent中的AlarmManager pendingIntent

我想取消定义服务的AlarmManager,在这个服务中可能会启动一个新的AlarmManger或取消之前定义的警报。我知道在alarmManager.cancel(PendingIntent)中的params pendingintent,必须是相同的。与filterEquals(Intent other)比较但它仍然没有工作。解决失败。 这是我的代码 public class GetRoundStroe { private Store[] stores; private Context mContext; public GetRoundStroe(Context mContext) { this.mContext = mContext; } public Store[] getStores() { if (ComCommand.haveInternet(mContext)) { start_am_normal(); } else { start_am_silence(); } return stores; } public Store[] start_am_silence() { long firstTime = SystemClock.elapsedRealtime(); AlarmManager am = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); if (AlarmHolder.mAlarmNormal != null) […]

AlarmManager的setRepeating和setInexactRepeating之间的区别

以下参数是什么: alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_FIFTEEN_MINUTES, alarmIntent); 以下内容: alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, alarmIntent); 有什么区别,两者在function方面有何不同?

如何才能正确地将唯一的额外内容传递给待处理的意图?

我遇到了一个有关alarmManager的问题,以及与其一起使用的附加function的待处理意图。 如果我设置多个警报,它们将会关闭,但额外的设置保持不变。 我已经读过这些问题: android挂起意图通知问题 Android保持缓存我的意图额外,如何声明一个保持新鲜额外的待定意图? 我试过了: 为每个待处理的意图分配唯一的ID 使用所有待处理的意图标志, 一切都无济于事。 我不知道为什么它不起作用。 这是一段代码: Intent intent = new Intent(con, AppointmentNotificationReciever.class); intent.putExtra(“foo”, bar.toString()); int id = randomNum; PendingIntent sender = PendingIntent.getBroadcast(con, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager am = (AlarmManager) con.getSystemService(Context.ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP, scheduleExecution, sender);

每天都有AlarmManager Android

我正在尝试制定一个时间表。 它应该每天下午1点或下午2点运行… 目前我只能让它每隔10秒或10分钟运行一次…… Intent myIntent = new Intent(AndroidAlarmService.this, MyAlarmService.class); pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0); AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.add(Calendar.SECOND, 10); alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); Toast.makeText(AndroidAlarmService.this, “Start Alarm”, Toast.LENGTH_LONG).show(); 谢谢