问题:
我正在开发一个简单的Android MVVM应用程序,用于学习目的,我需要每10秒从REST API获取数据,即使应用程序被杀死。我知道WorkManager的默认最小重复间隔为15分钟,这不符合我的要求。下面是我的代码结构的简化版本:
API接口:
interface ApiInterface {
@GET("search?country=India")
suspend fun getUniversities() : Response<University>
}
ApiUtilities:
object ApiUtilities {
val BASE_URL = "http://universities.hipolabs.com/"
fun getInstance() : Retrofit {
return Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
}
仓库:
class UniversityRepository(private val apiInterface: ApiInterface) {
private val universityLiveData = MutableLiveData<University>()
val university : LiveData<University>
get() = universityLiveData
suspend fun getUniversities() {
val result = apiInterface.getUniversities()
if(result.body() != null) {
universityLiveData.postValue(result.body())
}
}
}
ViewModel:
class UniversityViewModel(private val universityRepository: UniversityRepository): ViewModel() {
init {
viewModelScope.launch(Dispatchers.IO) {
universityRepository.getUniversities()
}
}
val university: LiveData<University>
get() = universityRepository.university
}
假设我是一个初学者,这是出于学习的目的,那么实现每10秒频繁轮询一次API的最佳方法是什么?我看过WorkManager,但最小间隔似乎是15分钟,这不符合我的要求。任何指导或替代方法都将非常感谢。在此先谢谢您!
1条答案
按热度按时间30byixjq1#
随着Android 13和更高版本的推出,现在有一些新的权限,使得在应用程序被杀的情况下更难进行投票。
我最近在前台服务上做了类似的事情。这会在应用中心创建一个通知,让用户知道应用仍在后台运行一个进程。
但它允许你在后台线程上执行连续的代码,但只有在显式的用户权限和可见性下。
Google Docs on Foreground服务https://developer.android.com/guide/components/foreground-service