当前位置: 首页 > 知识库问答 >
问题:

如果应用程序Hibernate1天,第二天没有调用AlarmManager

董高逸
2023-03-14

我正在开发一个android应用程序,它显示一个通知每12小时,如果时间是保存在数据库中。因此,每次在数据库中输入或编辑数据时,我都会取消当前的alarmmanager并启动一个新的alarmmanager,这样我就不会错过一个。另外,在重新启动时,我已经打电话给AlarmManager。在广播接收器上,检查数据库是否输入,如果发现,设置通知,并自动打开应用程序。

因此,当我通过手动更改日期来测试应用程序时,应用程序按预期工作。重新启动应用程序时,应用程序也可以工作。但如果我让应用程序闲置近14小时,通知就不会设置,但如果我打开应用程序并暂停它,通知就会在之后设置。

    alarmintent.putExtra("note","Notify");
    sender = PendingIntent.getBroadcast(context , 0 , alarmintent , PendingIntent.FLAG_CANCEL_CURRENT | Intent.FILL_IN_DATA);            
    alarm_manger = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    alarm_manger.cancel(sender);
    Calendar cal = Calendar.getInstance();
    long now = cal.getTimeInMillis();
    alarmintent = new Intent(context, package.Alarm_Manager.class);
    alarmintent.putExtra("note","Notification");
    sender = PendingIntent.getBroadcast(context , 0 , alarmintent , PendingIntent.FLAG_CANCEL_CURRENT | Intent.FILL_IN_DATA);            
    alarm_manger = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarm_manger.setRepeating(AlarmManager.RTC_WAKEUP, now, AlarmManager.INTERVAL_HALF_DAY, sender);

这是广播接收机

@Override
public void onReceive(Context context, Intent intent)
{
       NotificationManager manger = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
       Calendar cal = Calendar.getInstance();
       date = (int)(cal.getTimeInMillis()/1000);
       Notification notification = new Notification(R.drawable.vlcsnap_396460 , "Notify" , System.currentTimeMillis());
       PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0);
       notification.setLatestEventInfo(context, "App", "Notify" , contentIntent);
       notification.flags = Notification.FLAG_INSISTENT;
       manger.notify( 0 , notification);
   }

共有1个答案

淳于熙云
2023-03-14

如果设置pendingintent.flag_cancel_current.,则不需要调用alarm_manager.cancel(sender);

你打电话给

alarm_manger.setRepeating(AlarmManager.RTC_WAKEUP, now, AlarmManager.INTERVAL_HALF_DAY, sender);

将立即触发警报,因为当您设置警报时,现在已经通过了。

now + DateUtils.HOUR_IN_MILLIS / 2 

你有没有试着把它安排在更小的间隔?它被触发了吗?

 类似资料:
  • 问题内容: 我想知道为数千名用户编写聊天应用程序的正确方法是什么。 我只是感到困惑,我如何才能每秒使用AJAX或更少的方法来对服务器执行ping操作,并检查MySQL中是否有新记录等,并且服务器负载可以接受。 我目前正在考虑使用jQuery,PHP和MySQL进行编码。 请指教。您的帮助将不胜感激。 问题答案: 客户端 对于需要轮询服务器的任何程序,我建议使用WebSockets。 我写了一个非常

  • 我正在使用XMPP在app引擎上编写一个聊天应用程序。我的想法是允许用户互相聊天。我可以将消息发送到google talk帐户,方法是将登录的用户删除地址的@gmail.com部分,并将其替换为@appid.appspotchat.com)。例如,如果登录的用户是bob@gmail.com,则用于发送的jid将是bob@appid.appspotchat.com)。然后,您可以将消息发送到goog

  • 现在我们已经熟悉了Socket.IO,让我们编写一个聊天应用程序,我们可以用它在不同的聊天室聊天。 我们将允许用户选择用户名并允许他们使用它们进行聊天。 首先,让我们设置我们的HTML文件来请求用户名 - <!DOCTYPE html> <html> <head> <title>Hello world</title> </head> <script src = "/s

  • 第二天Android程序设计基础. 2.1 深入了解安卓 2.1.1 工程结构解析 src: Java源代码目录(只允许有一个包) AndroidMainfest.xml: (清单文件,描述应用程序构成、组件、权限等配置信息) gen/R.java: 资源文件,修改后自动重新生成 Android: 库 assets: 静态资产文件(用于存放不编译的资源最大支持1G) drawable: 程序图标(

  • 问题内容: 我设置了两个箭头,单击第二天,第二天,不久和前一天(两天前,不久)。该代码似乎无法正常工作?因为第二天和前一天只有一个。 有没有一种方法,如果我单击“下一步”按钮,则日期将在第二天连续更改。暂时只有一天 问题答案: 应该读 更新以回答评论中有关连续更改日期的问题。 这会将日期从您当时的日期起增加或减少一倍。

  • 问题内容: 在我目前正在从事的项目中,我们需要开发一个Web聊天应用程序,而不是一个非常复杂的聊天,仅是一种将两个人联系起来谈论一个非常具体的话题的方式,我们不需要任何身份验证对于这两个用户之一,我们不必支持表情符号,头像或类似的东西。 一些项目成员建议我们可以通过BOSH使用XMPP,我说这就像试图用船网抓鱼,并提出了一种更简单的方法,例如简单的Ajax / MySQL网络聊天,但是我们担心性能