【Android】【框架】【Jetpack】【Architecture】【WorkManager】

本文详细介绍了如何在Android中使用WorkManager执行后台任务,包括任务定义、执行时机设置、数据传递及任务调度。WorkManager能够确保任务即使在应用退出或重启后也能被执行,提供比IntentService更强大的后台任务管理能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接入

implementation "android.arch.work:work-firebase:1.0.0-alpha08"
androidTestImplementation "android.arch.work:work-testing:1.0.0-alpha08"

 

使用

// 1、定义任务
public class MyWorker extends Worker {

    @NonNull
    @Override
    public Result doWork() {
        String data = getInputData().getString("workerData");
        Log.i("MyWorker","doWork:"+data);
        return Result.SUCCESS;
    }
}

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // 1、执行时机
        Constraints mConstraints = new Constraints.Builder()
                .setRequiresBatteryNotLow(true) //不在电量不足时执行
                .setRequiresCharging(true) //在充电时执行
                .setRequiresStorageNotLow(true) //不在存储容量不足时执行
                .setRequiresDeviceIdle(true) //在待机状态执行
                .build();

        // 2、数据
        Data data = new Data.Builder().putString("workerData","helloWorld").build();

        // 3、构建任务
        OneTimeWorkRequest request = new OneTimeWorkRequest.Builder(MyWorker.class)
                .setInputData(data)
                .setInitialDelay(5, TimeUnit.SECONDS)
                .build();

        // 4、任务加入队列
        WorkManager.getInstance().enqueue(request);
    }
}

 

原理

 

WorkManager中的任务运行在子线程中,WorkManager会选择根据设备的API版本使用适合的算法调用JobScheduler、Firebase JobDispatcher或者AlarmManager来执行任务

 

优势

WorkManager生命力顽强 ,无视应用退出、App重启,可以把一些逻辑放在这里得到执行,有点像IntentService,但是目前看来要比IntentService厉害得多
甚至可以借助此工具,实现一些黑科技保活、拉活策略

 

后记

有什么写得错误、让人费解或遗漏的地方,希望可以不吝赐教,我会马上更改

 

学习自

https://blog.youkuaiyun.com/u013309870/article/details/86553531

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值