更换我的(资源密集型)服务
Replacing my (resource intensive) service
我有一个应用程序可以在通知中显示新数据。该数据由网络设备提供。我可以查询此设备并将其与我的服务中的缓存数据进行比较,以确定是否需要更新通知。我的应用程序有一项服务,该服务具有用于缓存数据的局部变量。如果设备有更新的数据,我会在通知中向用户展示。现在我开始得到 IllegalStateException 因为 Android O 不允许在应用程序处于后台模式时调用 startService()。我知道我可以在前台模式下启动服务,但由于 Android 提供的资源密集型方式较少,我想尝试一些新的东西。在缓存在局部变量中的数据旁边,它存储在 Firebase 数据库中。
我的要求:
- 每 10 秒检查一次(如果屏幕打开)是否有新数据
- 点亮屏幕是否有新数据
- 如果有新数据,更新通知
- 需要很长 运行ning 并且能够将新数据与旧数据(缓存或来自 firebase)进行比较。
- 当应用处于后台模式时可以运行
我的想法:
我查看了 Firebase 作业调度程序 (https://github.com/firebase/firebase-jobdispatcher-android#user-content-firebase-jobdispatcher-)。也许我可以将它配置为 运行 每次屏幕打开时,每 10 秒,从网络设备检索新数据并将其与 Firebase 数据库中的数据匹配。但是经常查询数据库可能会消耗很多性能。
尝试基于对象的数据库,如 Realm、SnappyDB(Uber 使用它)等。
查询速度超快
通过保留我的服务解决了这个问题。 Android 奥利奥迫使我使用不同的服务。只是一个简短的描述,以备不时之需:
- 只要可以连接到网络设备,我的服务就会处于前台模式。
- 无法连接到网络设备时服务停止。同时安排了一个 Firebase Jobdispatcher 作业。
- 当 jobdispatcher 运行作业时,它会查看是否可以连接到设备。如果为 true -> 服务启动并将自身提升到前台。
- 该服务仍然保持与网络设备的连接,并持有通知需要的对象。
我有一个应用程序可以在通知中显示新数据。该数据由网络设备提供。我可以查询此设备并将其与我的服务中的缓存数据进行比较,以确定是否需要更新通知。我的应用程序有一项服务,该服务具有用于缓存数据的局部变量。如果设备有更新的数据,我会在通知中向用户展示。现在我开始得到 IllegalStateException 因为 Android O 不允许在应用程序处于后台模式时调用 startService()。我知道我可以在前台模式下启动服务,但由于 Android 提供的资源密集型方式较少,我想尝试一些新的东西。在缓存在局部变量中的数据旁边,它存储在 Firebase 数据库中。
我的要求:
- 每 10 秒检查一次(如果屏幕打开)是否有新数据
- 点亮屏幕是否有新数据
- 如果有新数据,更新通知
- 需要很长 运行ning 并且能够将新数据与旧数据(缓存或来自 firebase)进行比较。
- 当应用处于后台模式时可以运行
我的想法: 我查看了 Firebase 作业调度程序 (https://github.com/firebase/firebase-jobdispatcher-android#user-content-firebase-jobdispatcher-)。也许我可以将它配置为 运行 每次屏幕打开时,每 10 秒,从网络设备检索新数据并将其与 Firebase 数据库中的数据匹配。但是经常查询数据库可能会消耗很多性能。
尝试基于对象的数据库,如 Realm、SnappyDB(Uber 使用它)等。 查询速度超快
通过保留我的服务解决了这个问题。 Android 奥利奥迫使我使用不同的服务。只是一个简短的描述,以备不时之需:
- 只要可以连接到网络设备,我的服务就会处于前台模式。
- 无法连接到网络设备时服务停止。同时安排了一个 Firebase Jobdispatcher 作业。
- 当 jobdispatcher 运行作业时,它会查看是否可以连接到设备。如果为 true -> 服务启动并将自身提升到前台。
- 该服务仍然保持与网络设备的连接,并持有通知需要的对象。