android - 在 Android 上创建约会提醒的最佳方式是什么?

标签 android alarmmanager

在 Android 上设置约会提醒的最佳方式是什么?我希望有比 AlarmManager 更好的东西。

假设您有一个应用程序,允许用户存储下一次 dentry 预约(或任何预约 - 无关紧要 - 但假设每年只有 1 或 2 次预约)的提醒。随着约会的临近,它应该会弹出一个通知,即使应用程序没有运行(假设手机已开机),它也会工作。

AlarmManager 可以做到这一点,但每次设备重启时都必须重新激活它。这很丑陋,原因有 3 个:-

  1. 如果将应用程序安装到 SD 卡,则无法正常工作(许多用户会攻击不提供 app2sd 支持的应用程序)。

  2. 如果没有存储提醒,则该服务仍必须在启动时运行才能发现。据我所知,仅在需要时以编程方式设置 BOOT_COMPLETED 监听器是不可能的。

  3. 没有人希望他们的手机在启动时因这些类型的服务而陷入困境。

所以我想知道是否有人知道更好的解决方案?我只想存储一个长期约会。最好使用内部 Android 服务,而不依赖于访问 Google 日历等,或类似的东西。有什么想法吗?

最佳答案

正确的解决方案是 AlarmManager。您可以通过使用 PackageManager.setComponentEnabledSetting() 以编程方式更改是否在启动时启动,以仅在您安排了警报时启用接收器组件。

在实践中,AlarmManager 在启动时保留警报是没有用的,因为绝大多数应用程序需要在启动后重新评估警报。例如,日历需要重新同步它们等。保留它们有一个很大的缺点:应用程序中的错误可能会在警报管理器中留下垃圾数据,即使重新启动也无法清除。

关于SD卡,可以看http://developer.android.com/reference/android/content/Intent.html#ACTION_EXTERNAL_APPLICATIONS_AVAILABLE了解何时重新安装外部存储并且您的应用可以再次运行。

关于android - 在 Android 上创建约会提醒的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6481137/

相关文章:

特定日期的 Android 通知

android - S3(GT-I9300) 相机预览支架错误

java - 更改日历时间(java.util.Calendar)

java - 实例化重复警报后如何从 BroadcastReceiver 与 Activity 通信

java - Android BroadcastReceiver,似乎不像它应该的那样,我没有正确接收 Intent

java - 如何使用 setExact 设置重复闹钟以及如何取消重复闹钟?

android - 如何设置闹钟每月重复

java - 在 Android 应用程序中设置和打开 fragment 的问题

java - Android 表格单元格边框

android - 独立工具栏项目上的背景波纹效果消失了