问题:
我正在开发一个简单的 Android MVVM 应用程序用于学习目的,我需要每 10 秒从 REST API 获取数据,即使应用程序被终止也是如此。我了解 WorkManager 默认的最小重复间隔为 15 分钟,这不符合我的要求。这是我的代码结构的简化版本:
Api接口:
interface ApiInterface {
@GET("search?country=India")
suspend fun getUniversities() : Response<University>
}
Api实用程序:
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())
}
}
}
视图模型:
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分钟,这不符合我的要求。任何指导或替代方法将不胜感激。预先感谢您!
在 Android 13 及更高版本中,现在有一些新的权限,使得在应用程序被终止时进行轮询变得更加困难。
我最近对前台服务做了类似的事情。这会在应用程序中心创建一条通知,让用户知道应用程序仍在后台运行进程。
但它允许您在后台线程上执行连续代码,但前提是具有显式用户权限和可见性。
这里是关于前台服务的谷歌文档。 https://developer.android.com/guide/components/foreground-service