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

每60秒更新一次正在进行的通知

海典
2023-03-14

我的应用程序的一个核心功能是它有一个持续的通知和一个每分钟更新的倒计时--即使应用程序被Android操作系统关闭。

首先,我使用一个服务来运行计时器并更新通知,但这是一个内存/电池占用。因此,我转而使用AlarmManager来完成计时器和重复警报,每60秒左右唤醒一次以更新通知:

Intent repeatingIntent = new Intent(this, AlarmReceiver.class);
repeatingIntent.putExtra(PERFORM_ACTION, ALARM_ACTION_UPDATE_NOTIFICATION);
PendingIntent repeatingAlarmIntent = PendingIntent.getBroadcast(this, 
       REQUEST_CODE_UPDATE_NOTIFICATION, repeatingIntent, 0);
AlarmManager am = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);       
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
    SystemClock.elapsedRealtime()+1000, 
    REPEATING_ALARM_INTERVAL*1000, repeatingAlarmIntent);

什么是一种好方法来确保正在进行的通知至少每60秒更新一次呢?除了回到使用一个服务(啊!加上操作系统有时会在内存很少的设备上直接杀死服务)之外,唯一想到的另一件事是设置类似5个不同的重复警报(使用不同的请求代码),并以交错的方式每5分钟触发一次。

共有1个答案

越俊艾
2023-03-14

不要使用setrepeating(),而是使用setexact()setwindow(),并在每次触发警报时设置一个新警报。这远远高于API19。

 类似资料:
  • 问题内容: 使用它可以在指定的时间启动功能: 但是,如果我想多次启动该功能怎么办?每次经过一个时间间隔,我都想执行该功能(假设每60秒执行一次)。 问题答案: 如果您不在乎内的代码是否可能花费比您的间隔更长的时间,请使用: 一遍又一遍地触发作为第一个参数传入的函数。 更好的方法是与函数一起使用: 这样可以保证在执行代码之前不会进行下一个调用。在本示例中,我将其用作函数参考。这是给函数命名并在其中调

  • 问题内容: 我想做的是检索一个PHP文件的内容,并每60秒将它插入一个div中,基本上刷新了动态div。到目前为止,我已经提出了以下代码,但是它似乎没有用。代码就是这样,除了MYSQL登录外,没有什么额外的。 PHP抢: 原始的PHP代码是相同的,包含在div中,其id属性为’ajax_table’。 JavaScript是: 那是在请求另一个php页面的页面上。 问题答案: 如何使用类似jQue

  • 问题内容: 我在Django中的应用程序 可以 创建一些 非常大的SQL查询。我目前使用一个对象,作为我需要的数据,然后使用一个,以返回要显示给用户的内容。 显然,我可以让用户等待一分钟,同时正在执行这些许多查询集并从数据库中提取查询,然后返回此单一HTML页面。 理想情况下,我想在需要时更新页面,例如: 这可能吗? 问题答案: 我最近发现HttpResponse可以是生成器: 这将逐步将结果返回

  • 我用基本的图形用户界面创建了一个小画板程序。我使用了画图组件方法。我想每毫秒更新正在绘制的图形。这样,用户可以在释放鼠标点击之前看到他们将要绘制的内容。例如,如果我正在绘制一个矩形,我想在绘制矩形时看到它。如果你不明白我到底在说什么,打开微软油漆,点击矩形工具。画一个矩形。注意它是如何持续更新的,而不是在释放鼠标后。我想一定有办法让它每毫秒更新我的图形。做这件事最好的方法是什么?抱歉,如果这是一个

  • 如果我不控制代码每秒执行的次数,当我添加一行时,程序会发生变化,我必须再次调整常量。(谷歌翻译)我的代码失控了:

  • 使用Laravel的雄辩模型,我如何在访问对象时更新对象的数据,如果它已经 我有另一个API,我想确保数据是半最新的,但想缓存在我的数据库中的数据,而不是调用他们的API每次页面加载。 是否有Laravel在每次加载模型时调用的函数,我可以检查30天是否已经过去,调用API加载新数据,然后保存它?