即使应用程序在后台,我希望我的应用程序将事件(由 SDK 触发)存储到数据库(使用领域)。我的概念是使用一个服务来进行一些 SDK 初始化和监听事件。通过在我的自定义应用程序类的方法中启动此服务onCreate()
,我想确保该服务在应用程序处于后台时保持活动状态,这样我就不会错过任何要存储到数据库中的事件。
但现在由于 Android 8 后台服务不再被允许。但我不想使用前台服务,因为我需要显示通知。而且我不希望用户知道事件存储在后台数据库中。我认为这些信息对于普通用户来说是技术性的。
Application.onCreate()
当我想启动服务但抛出异常时,我意识到了问题:
原因:java.lang.IllegalStateException:不允许启动服务 Intent { cmp=my.package.name.debug/my.package.name.service.MyService }:应用处于后台 uid UidRecord{94b2e4a u0a204 SVC 空闲更改:空闲|未缓存的过程:1 seq(0,0,0)}
值得注意的是,如果我终止我的应用程序的任务,则会引发异常。Application.onCreate()
如果我杀死应用程序,就会调用它。
最后,我不确定服务是否适合用于我的用例。
我有两个问题:
- 如果我的应用程序在后台,如果我想将事件存储在数据库中,使用哪种组件?
- 为什么杀死应用程序会触发应用程序
onCreate()
?