我有一个应用程序可以在通知中显示新数据。该数据由网络设备提供。我可以查询此设备并将其与我的服务中的缓存数据进行比较,以确定是否需要更新通知。我的应用程序有一个服务,它具有缓存数据的局部变量。如果设备有更新的数据,我会在通知中显示给用户。现在我开始收到 IllegalStateException ,因为 Android O 不允许在应用程序处于后台模式时调用 startService() 。我知道我可以在前台模式下启动服务,但由于 Android 提供的资源密集型方式较少,我想尝试一些新的东西。除了缓存在本地变量中的数据之外,它还存储在 Firebase 数据库中。
我的要求:
- 如果有新数据,每 10 秒检查一次(如果屏幕打开)
- 开机时检查是否有新数据
- 如果有新数据,更新通知
- 需要长时间运行并能够将新数据与旧数据(缓存或来自 Firebase)进行比较。
- 当应用程序处于后台模式时可以运行
我的想法:我看过 Firebase 作业调度程序(https://github.com/firebase/firebase-jobdispatcher-android#user-content-firebase-jobdispatcher-)。也许我可以将它配置为每次打开屏幕时运行,每 10 秒运行一次,以从网络设备检索新数据并将其与 Firebase 数据库中的数据匹配。但是,经常查询数据库可能会花费很多性能。