【问题标题】:Android Work Manager - Does Work Manager will 100% ensure the background execution to be Completed?Android Work Manager - Work Manager 会 100% 确保后台执行完成吗?
【发布时间】:2018-07-30 03:44:30
【问题描述】:

根据我从文档https://developer.android.com/topic/libraries/architecture/workmanager 中读到的内容,

上面说:

即使您的应用被强制退出或 设备已重新启动。

也就是说,不管怎样,在后台的执行都会100%执行到完成?

举个例子:

一个应用程序具有执行工作管理器实施的按钮,将数据上传到在线数据库,但它需要互联网连接才能上传数据。因此,我的应用当前处于离线模式,我点击了按钮。

我的不确定性:

工作管理器是否会在后台运行进程,并继续重试进程,即使没有 Internet 连接?并且只有完成并停止该过程,直到有 Internet 连接并完成数据上传?

【问题讨论】:

    标签: android workmanagers android-workmanager


    【解决方案1】:

    工作管理器是否会在后台运行该进程,并继续重试 即使没有互联网连接的过程?并且只有 完成并停止该过程,直到有 Internet 连接 并完成数据上传?

    它不会隐式地尝试连续执行工作,只有在成功时才停止。这将取决于doWork() 或您的Worker 返回的结果。如果它返回RETRY,那么将使用WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, long, TimeUnit) 中指定的退避重试工作。

    但是,如果您需要在有 Internet 连接时执行某些操作,那么您可以指定适当的约束。对于网络连接,您可以设置如下约束:

    Constraints myConstraints = new Constraints.Builder()
    .setRequiredNetworkType(NetworkType.CONNECTED)
    .build();
    
     OneTimeWorkRequest mywork=
                new OneTimeWorkRequest.Builder(MyWorker.class)
     .setConstraints(myConstraints)
     .build();
     WorkManager.getInstance().enqueue(mywork);
    

    WorkManager 将确保您的工作仅在有互联网连接时执行。

    【讨论】:

    • 当我广告这个约束工作管理器没有上传图片,但我的手机连接到 wifi 。知道为什么
    【解决方案2】:

    工作管理器是否会在后台运行该进程,并继续重试 即使没有互联网连接的过程?并且只有 完成并停止该过程,直到有 Internet 连接 并完成数据上传?

    因此,因为您已指定工作经理需要网络连接。

    val constraints = Constraints.Builder()
                                .setRequiredNetworkType(NetworkType.CONNECTED).build()
    
    val workRequest = OneTimeWorkRequest.Builder(RequestWorker::class.java)
                                .setConstraints(constraints)
                                .build()
    

    在有网络连接之前不会触发工作请求,将其视为 WorkManager 监听 NetworkState 的变化,一旦网络连接,它就会开始处理您的 workRequest(doWork)。

    我还必须补充一点,当您的手机处于 AirPlane 模式并且您的手机以待处理的工作请求重新启动时,我目前不认为工作请求会像您可能的那样保证立即开始处理期望,即使网络状态为 CONNECTED。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 2021-05-29
      • 2019-05-22
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      相关资源
      最近更新 更多