Kotlin如何从android.app.Application启动异步处理
我是Kotlin的新手,正在尝试在android.app.Application中启动一个异步后端调用Kotlin如何从android.app.Application启动异步处理,android,kotlin,kotlin-coroutines,kotlin-android-extensions,android-ktx,Android,Kotlin,Kotlin Coroutines,Kotlin Android Extensions,Android Ktx,我是Kotlin的新手,正在尝试在android.app.Application中启动一个异步后端调用 import android.app.Application; class App: Application { override fun onCreate() { super.onCreate() fetchDataFromBackend() } fun fetchDataFromBackend() { lifecycleScope.launch {
import android.app.Application;
class App: Application {
override fun onCreate() {
super.onCreate()
fetchDataFromBackend()
}
fun fetchDataFromBackend() {
lifecycleScope.launch {
// Fetches data from backed.
}
}
}
问题是不能从应用程序中使用lifecycleScope.launch,我已经在活动/片段和viewModelScope中为我的viewModel做了同样的操作
我希望在应用程序内部也这样做,有人有什么建议吗?您可以使用,它与应用程序
对象具有相同的生命周期
ProcessLifecycleOwner.get().lifecycleScope.launch {
// Fetches data from backend
}
您可以使用,它与应用程序
对象具有相同的生命周期
ProcessLifecycleOwner.get().lifecycleScope.launch {
// Fetches data from backend
}
为了更好地理解,我可以问一下您的场景是什么,在
应用程序
类中从后端获取数据?为什么活动或片段不是您的选项?它用于获取整个应用程序生命周期所需的用户首选项,而不限于任何活动。我明白了,谢谢。App
类的问题在于它没有一个合适的类似生命周期的活动。因此,如果需要,您无法正确地取消请求,就像您在活动中所做的那样。你有没有考虑过一种单一的活动方法,从那时起你可以做到这一点?老实说,我不知道什么是您的场景的最佳实践。我通常避免在App
类中执行任何复杂的逻辑。为了更好地理解,我可以问一下您的场景是什么,在App
类中从后端获取数据?为什么活动或片段不是您的选项?它用于获取整个应用程序生命周期所需的用户首选项,而不限于任何活动。我明白了,谢谢。App
类的问题在于它没有一个合适的类似生命周期的活动。因此,如果需要,您无法正确地取消请求,就像您在活动中所做的那样。你有没有考虑过一种单一的活动方法,从那时起你可以做到这一点?老实说,我不知道什么是您的场景的最佳实践。我通常避免在App
类中执行任何复杂的逻辑。如果我错了,请纠正我,但这不能保证在应用程序发送到后台后立即调用。所以它不适合清理不再需要的任务和内存。你是对的。在此作用域中运行就像在线程或异步任务中运行一样——它不会使您的进程保持活动状态,因此如果没有其他服务或活动正在运行,操作系统可能会终止您的应用程序进程。OP提到它是用来获取用户偏好的,所以我假设如果没有其他组件运行,获取动作就没有意义了,所以在这个协同程序中间被杀死是可以的。如果我错了请更正我,但是在你的应用程序被发送到后台之后,这不保证会被调用。所以它不适合清理不再需要的任务和内存。你是对的。在此作用域中运行就像在线程或异步任务中运行一样——它不会使您的进程保持活动状态,因此如果没有其他服务或活动正在运行,操作系统可能会终止您的应用程序进程。OP提到它是用来获取用户偏好的,所以我假设如果没有其他组件在运行,那么获取动作就没有意义了,所以在这个协同程序的中间会被应用程序杀死。