Android架构组件WorkManager(管理后台任务)使用

WorkManager API是Android用于管理后台异步任务的工具,确保任务在指定条件(如设备充电和联网)下执行,即使应用关闭也能保证任务运行。适合于数据上传等需要持久运行的场景,而对进程内简单后台工作的处理则推荐使用ThreadPool或AsyncTask。
摘要由CSDN通过智能技术生成

WorkManager定义:

WorkManager API可以轻松地让异步任务延迟执行以及何时运行它们,这些API可让我们创建任务并将其交给WorkManager,以便立即或在适当的时间运行。例如,应用程序可能需要不时从网络下载新资源,我们可以使用WorkManager API设置一个任务,然后选择适合它运行的环境(例如“仅在设备充电和联网时”),并在符合条件时将其交给 WorkManager 运行,即使该应用程序被强制退出或者设备重新启动,这个任务仍然可以保证运行

WorkManager适用于那些即使应用程序退出,系统也能够保证这个任务正常运行的场景,比如将应用程序数据上传到服务器。它不适用于应用进程内的后台工作,如果应用进程消失,就可以安全地终止,对于这种情况,需要选择ThreadPool、AsyncTask来实现。

Work的约束:

 .setRequiredNetworkType(NetworkType.CONNECTED)//网络连接时执行
 .setRequiresBatteryNotLow(true) //不在电量不足执行
 .setRequiresCharging(true) //在充电时执行
 .setRequiresStorageNotLow(true) //不在存储容量不足时执行
 .setRequiresDeviceIdle(true) //在待机状态下执行 调用需要API级别最低为23

Work设置网络约束时的 各个值类型的作用

 NetworkType.NOT_REQUIRED:对网络没有要求
 NetworkType.CONNECTED:网络连接的时候执行
 NetworkType.UNMETERED:不计费的网络比如WIFI下执行
 NetworkType.NOT_ROAMING:非漫游网络状态
 NetworkType.METERED:计费网络比如3G,4G下执行。

开始创建Work

package io.dcloud.H56580E2E.viewModelLiveData;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import com.google.gson.Gson;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
import androidx.work.Data;
import androidx.work.Worker;
import io.dcloud.H56580E2E.R;
import io.dcloud.H56580E2E.info.ImageInfo;
import io.dcloud.H56580E2E.service.MainInterfaceService;
import io.dcloud.H56580E2E.util.BaseObserver;
import io.dcloud.H56580E2E.util.RetrofitHelper;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;

public class DomeWork extends Worker {
    // 服务请求接口
    private MainInterfaceService main_interfaceService;
    @NonNull
    @Override
    public WorkerResult doWork() {
        /**
         * WorkerResult.SUCCESS //成功
         * WorkerResult.FAILURE //失败
         * WorkerResult.RETRY //重试
         */

        //接收传递进来的参数
        String parame_str = this.getInputData().getString("workparame","");
        Log.i("work","任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值