【问题标题】:alarm manager to trigger at different time intervals警报管理器以不同的时间间隔触发
【发布时间】:2014-02-27 02:47:41
【问题描述】:

单个警报管理器是否可以在 2 个不同的时间间隔触发,例如第一个间隔应该是 1 分钟,第二个间隔应该是 2 分钟

我正在尝试使用以下代码,但它没有像我预期的那样工作:(

{
    AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);

    Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
    intent.putExtra(ONE_TIME, Boolean.FALSE);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 *x, pi); 
}

//Initialized x=1;
//In onReceive what i did was...
public void onReceive(Context context, Intent intent) {
   if(x===1) 
       x=2;
   else
       x=1; 
}

这是错的吗?

【问题讨论】:

  • 我不认为这可以通过简单的方式完成。
  • 你想做什么?警报管理器始终是单一的 - 它只是根据您的待处理意图添加新警报。
  • 我试图让 wifi 自动切换,1 分钟应该打开,接下来 2 分钟应该关闭!!那么你是说它不会收到x值吗? @nikis

标签: android alarmmanager android-alarms repeatingalarm


【解决方案1】:

来自谷歌开发者文档

BroadcastReceiver 对象仅在调用 toonReceive(Context, Intent) 期间有效。一旦您的代码从此函数返回,系统就会认为该对象已完成且不再处于活动状态。

因此您的 x 将始终为 1。将 x 变量设为静态。

【讨论】:

  • 感谢信息伙伴尝试使用静态但它不起作用:(@arul
  • 尝试在广播接收器类之外的不同类中初始化 x
猜你喜欢
  • 1970-01-01
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
相关资源
最近更新 更多