我需要每天在后台调用一个API,即使应用已关闭。我看过WorkManagerAPI。对于我的场景,我尝试了PeriodicWorkRequest但不幸的是,它没有达到我预期的结果。我所做的是在应用程序类中使用这段代码PeriodicWorkRequest.BuildermyWorkBuilder=newPeriodicWorkRequest.Builder(MyWorker.class,24,TimeUnit.HOURS);PeriodicWorkRequestmyWork=myWorkBuilder.build();WorkManager.getInstance().enqueue(
我已经查看了WorkManager的代码实验室以及此处的一些示例,但我所看到的代码中的所有内容要么与在设备上本地工作有关,要么与上传到服务器的工作有关,而不是下载数据和响应收到的数据。在开发人员指南中甚至说,“例如,应用程序可能需要不时从网络下载新资源”,所以我认为它非常适合这项任务。我的问题是WorkManager是否可以处理以下情况,如果不能,处理它的合适工具是什么:安排一个每天在后台运行一次的作业工作是从RESTAPI获取数据(如果可能,将其发布到LiveData对象)。当数据返回时,检查它是否比本地数据新。通知用户新数据可用。我的worker类(Class)看起来像这样:pub
我正在尝试从架构组件中使用WorkManager。我已将compileSdkVersion和targetSdkVersion从27升级到28。gradle同步已成功完成。但是构建时错误不断弹出。由于“android.support:design”,android.support库正在使用版本28.0.0-rc02。我尝试添加PackagingOptions以排除“proguard/androidx-annotations.pro”。但这没有帮助。但是这次我收到了不同的错误信息:Programtypealreadypresent:com.google.common.util.concur
我正在尝试从架构组件中使用WorkManager。我已将compileSdkVersion和targetSdkVersion从27升级到28。gradle同步已成功完成。但是构建时错误不断弹出。由于“android.support:design”,android.support库正在使用版本28.0.0-rc02。我尝试添加PackagingOptions以排除“proguard/androidx-annotations.pro”。但这没有帮助。但是这次我收到了不同的错误信息:Programtypealreadypresent:com.google.common.util.concur
我是新架构组件WorkManager的新手,我通过Retrofit和RxJava进行API调用。我的用例是从后端获取新帖子,然后显示通知并更新小部件。因此,Worker类的doWork()方法中的代码可能看起来像这样。@NonNull@OverridepublicResultdoWork(){AppDependenciesappDependencies=newAppDependencies((Application)getApplicationContext());Repositoryrepository=appDependencies.getRepository();reposito
我想安排每晚的数据库更新。所以我使用新的AndroidWorkManager。我的理解是,一旦安排好,它将始终在后台独立于应用程序的生命周期运行。那正确吗?我的第一个测试表明只有在应用程序运行时才执行工作。vallocationWork=PeriodicWorkRequest.Builder(UpdateDatabaseWorker::class.java,24,TimeUnit.HOURS).addTag("DATABASE_UPDATE_SERVICE").build()WorkManager.getInstance().enqueue(locationWork)
Google最近宣布了新的WorkManager架构组件。通过在Worker类中实现doWork()可以很容易地安排同步工作,但是如果我想要怎么办在后台做一些异步工作?例如,我想使用Retrofit进行网络服务调用。我知道我可以发出同步网络请求,但它会阻塞线程并且感觉不对。是否有任何解决方案或目前不支持? 最佳答案 我使用了countdownlatch并等待它达到0,这只会在异步回调更新它时发生。请参阅此代码:publicWorkerResultdoWork(){finalWorkerResult[]result={WorkerRe
WorkManagerisalibraryusedtoenqueueworkthatisguaranteedtoexecuteafteritsconstraintsaremet.因此,经过Constraints类我还没有找到任何功能来增加工作的时间限制。例如,我想在早上8:00开始工作(工作可以是OneTimeWorkRequest或PeriodicWorkRequest两种类型中的任何一种)。如何使用WorkManager添加约束来安排这项工作。 最佳答案 很遗憾,您目前无法在特定时间安排工作。如果你有时间紧迫的实现,那么你应该使
[更新]这已在alpha09中解决我有两件作品被WorkManageralpha04beginWith和thenapi链接起来。funupdateData(){createWorkRequests()runDataDownloadWork()}privatefuncreateWorkRequests(){dwElementsWork=OneTimeWorkRequestBuilder().addTag(TAG_ELEMENTS_WORK).build()dwElementTypesWork=OneTimeWorkRequestBuilder().addTag(TAG_ELEMENTS_
Android架构有一个新组件WorkManager.来自example,classCompressWorker(context:Context,params:WorkerParameters):Worker(context,params){overridefundoWork():Result{//Dotheworkhere--inthiscase,compressthestoredimages.//Inthisexamplenoparametersarepassed;thetaskis//assumedtobe"compressthewholelibrary."myCompress(