【问题标题】:Android foreground service安卓前台服务
【发布时间】:2023-10-11 06:11:02
【问题描述】:

故事如下:我创建了一个应用程序,它在启动时启动并以指定的时间间隔执行一些操作。为了实现这一点,我正在创建一个使用AlarmManager 来创建重复事件的服务,然后由BroadcastReceiver 处理,它完成了繁重的工作。当服务被销毁(用户选择退出应用程序)时,必须取消事件,因此服务必须保持对用于启动它的同一 PendingIntent 的引用。

问题:服务必须调用startForeground 以确保它不会死,这样它才能保持对PendingIntent 的引用。通知一直出现在状态栏中,用户觉得它很烦人(老实说,我也是)。

下一步做什么?理想情况下,我正在寻找将图标保留在状态栏中但不会显示在下拉列表中的解决方案。这样用户就会知道它正在运行,并且不会因浪费空间而烦恼。

几个猜测:也许有可能在重新创建时恢复服务中的引用?如果是这样,怎么做?这样我就可以避免使用startForeground。但是,如何让图标进入状态栏?

或者也许有人有更好的解决方案?

【问题讨论】:

    标签: android service notifications foreground


    【解决方案1】:

    首先,您不必一直坚持PendingIntent。如果您拥有所有必需的数据,您可以稍后重新创建它以取消通知 - 您只需使用完全相同的数据重新创建它。

    【讨论】:

    • 谢谢,这很好,但是,如何在没有扩展消息的情况下将图标放入状态栏中?