在目前Service组件越来越不被提倡使用的今天,我们对于他的替代品是使用WorkManager,但是在上线之后,发现了一个崩溃信息,如下:
1 | java.lang.IllegalStateException:The file system on the device is in a bad state. WorkManager cannot access the app's internal data store. |
可以看到是ForceStopRunnable
类出现了问题,
1 | public void run() { |
所以我们需要自定义WorkManager的初始化,通过Configuration.Builder
配置InitializationExceptionHandler
- 需要在清单文件中覆盖自带的
WorkManagerInitializer
,覆盖的方式不同版本不同 - 覆盖之后,自定义WorkManager初始化有两种方式
- 我们的Application继承
Configuration.Provider
1
2
3
4
5
6
7
8override fun getWorkManagerConfiguration(): Configuration {
return Configuration.Builder()
.setMinimumLoggingLevel(Log.INFO)
.setInitializationExceptionHandler {
it.printStackTrace()
}
.build()
} - 我们自定义自己的
Initializer
,也可以直接继承WorkManagerInitializer
,不要super他的onCreate
即可1
2
3
4
5
6
7
8
9
10
11
12override fun onCreate(): Boolean {
// Initialize WorkManager with the default configuration.
val config =
Configuration.Builder()
.setMinimumLoggingLevel(Log.INFO)
.setInitializationExceptionHandler {
it.printStackTrace()
}
.build()
WorkManager.initialize(context!!, config)
return true
}
- 我们的Application继承
这样就可以传入InitializationExceptionHandler
避免ForceStopRunnable
的崩溃。
相关文章推荐:官网,Android JetPack-WorkManager详解