首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alarmmanager将在reboot...but上线7天?

Alarmmanager将在reboot...but上线7天?
EN

Stack Overflow用户
提问于 2015-06-18 22:01:26
回答 3查看 261关注 0票数 0

我不明白为什么这个闹钟会在重启时响起……我在这里提前7天设置了它-

代码语言:javascript
复制
Intent intent = new Intent(MainActivity.this, Reminder.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
            MainActivity.this, 1, intent, 1);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
try {
    am.cancel(pendingIntent);
} catch (Exception e) {
    System.out.println("Derp");
}
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, 7);
long time = calendar.getTimeInMillis();

am.set(AlarmManager.RTC_WAKEUP, time,
            pendingIntent);

这是我的清单,我将警报设置为在重启时停留-提醒是接收警报的类-

代码语言:javascript
复制
<receiver android:name="com.practicum.notifications.Reminder" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
</receiver> 
EN

回答 3

Stack Overflow用户

发布于 2015-06-18 22:09:32

默认情况下,当设备关闭时,所有告警都会取消。为了防止这种情况发生,您可以将应用程序设计为在用户重新启动设备时自动重新启动重复的警报。这确保了AlarmManager将继续执行其任务,而无需用户手动重新启动警报。

您必须在启动接收器中再次手动重置警报

代码语言:javascript
复制
 public class SampleBootReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
        // Set the alarm here.
    }
}
票数 3
EN

Stack Overflow用户

发布于 2015-06-18 22:13:06

当你关闭Android设备的电源时,所有的警报都会被关闭。

您需要调用setRepeating方法

代码语言:javascript
复制
public class AlarmReceiver extends BroadcastReceiver {
  private static final int PERIOD=5000;

  @Override
  public void onReceive(Context ctxt, Intent i) {
    scheduleAlarms(ctxt);
  }

  static void scheduleAlarms(Context ctxt) {
    AlarmManager am = (AlarmManager) ctxt.getSystemService(Context.ALARM_SERVICE);

    Intent i = new Intent(ctxt, YourService.class);

    PendingIntent pi = PendingIntent.getService(ctxt, 0, i, 0);

    mgr.setRepeating(AlarmManager.ELAPSED_REALTIME,
                     SystemClock.elapsedRealtime() + PERIOD, PERIOD, pi);
  }
}

从CommonsWare检查this answer

票数 0
EN

Stack Overflow用户

发布于 2015-06-22 06:35:28

为了便于将来参考,我误解了接收启动完成操作的工作原理。我在我的两个receiver类中都有intent过滤器,所以它们都在运行,而我需要一个新的broadcastreceiver类上的intent过滤器来重置我的警报管理器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30917534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档