先阐述需求,我需要在退出APP之前进行sp存储操作,由于sp存储耗时,如果sp数据过大,则会造成sp还未存储成功,APP就已经退出,这显然不符合需求 解决方案一、 sp存储是有返回值的,可以查看源码,此时可以等待有返回值后再退出 此方案有一定局限性,很多项目sp都进行了封装,修改不易,此时可以讲代码进行同步操作,等待执行完成sp后再退出,即为方案二、 1.首先新增依赖
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.2.0'//lifecycleScope implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'//viewModelScope
编辑我的demo
可以看到此时的执行顺序,通过 join方法阻塞代码,等待协成代码执行完后再执行后面的
再进行代码优化,可以这样
fun testLaunch(){
runBlocking {
val job = GlobalScope.launch {
SpUtils.setLogin(false)
}
job.join()
exitApp()
}
}
最终可实现 sp存储成功后再退出APP