【问题标题】:Android: Does Alarm Manager get killed if the application get kill by systemAndroid:如果应用程序被系统杀死,警报管理器是否会被杀死
【发布时间】:2016-10-13 04:00:56
【问题描述】:

我的 Receiver 将在设备启动时加载,并启动警报管理器以安排每 10 秒检查我的其他服务是否仍在运行。现在我想知道如果内存不足,警报接收器会被杀死或停止接收广播。 因为我需要不断检查我的其他服务是否仍然可用并且不会被系统杀死。如果我的服务被销毁或者没有重新启动,报警接收器可以自动启动服务。

【问题讨论】:

标签: android alarmmanager low-memory


【解决方案1】:

广播接收器(特别是警报接收器)可能会在“内存压力过大”的情况下被系统杀死。也就是说:它不会在常规情况下发生,但它可能发生。

流程生命周期

当前正在执行 BroadcastReceiver 的进程(即 当前在其 onReceive(Context, Intent) 方法中运行代码) 被认为是一个前台进程,将保持运行 系统,除非在极端内存压力的情况下。

来自Android documentation

【讨论】:

  • 有什么好的方法可以防止这种情况发生,因为我需要监听 UDP 数据包以不断检查其他设备控制,例如用户触摸编辑文本字段,这将向我的设备发送一个数据包,以便我的设备可以做出反应并显示键盘。如果 AlarmReceiver 会被破坏,那么我就懒得写那个 AlarmReceiver。
  • 没有办法阻止这种情况的发生。 Android 将决定何时可以杀死警报接收器。它不会经常发生,所以也许编写警报接收器仍然值得痛苦。
  • 抱歉没听懂最后一句话,因为英语不是我的第一语言“值得痛苦”这是否意味着仍然值得拥有它???
  • 是的,我认为值得拥有它。服务可能因多种原因而被终止,与内存不足不同。如果您认为我提供的答案是正确的,请将其标记为有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
  • 2020-10-23
相关资源
最近更新 更多