如何在Android的工作管理器中传递POJO类? [英] How to Pass POJO class in Work manager in android?

查看:134
本文介绍了如何在Android的工作管理器中传递POJO类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们如何通过工作管理器的setData方法在工作管理器中传递可序列化对象?有什么方法可以通过传递对象来与工作管理器进行处理?

How can we pass Serializable object in work manager by setData method of work manager? Is there any way to process with Work manager by passing object?

WorkManager是一个用于使工作入队的库,该库在满足其约束条件后可以执行.WorkManager允许观察工作状态以及创建复杂工作链的能力.

 Map<String, Object> map = new HashMap<>();
 AddressBookData addressBookData = new AddressBookData();
 addressBookData.setThreadId(001);

 map.put("AddressBookData", addressBookData);


 Data data = new Data.Builder()
                    .putAll(map)
                    .build();

 OneTimeWorkRequest compressionWork =
                new OneTimeWorkRequest.Builder(DataSyncWorker.class)
                        .setInputData(data)
                        .build();

它崩溃了,并显示诸如AddressBookData之类的错误不是有效的类.

It crash app and showing error like AddressBookData is not valid class.

注意:我想在工作管理器中传递POJO类,并在doWork方法中从工作管理器获取InputData.

推荐答案

今天,我也遇到了这个问题.所以我找到了传递对象的方法.

Today, I also faced this issue. So I found the way to pass an object.

我的要求是传递 Bitmap 对象.(您可以根据要求通过)

My Requirement is pass Bitmap object. (You can pass as per your requirement)

在您的Gradle文件中添加依赖项

Add dependency in your Gradle file

等级:

dependencies {
  implementation 'com.google.code.gson:gson:2.8.5'
}

使用以下方法对对象进行序列化和反序列化

Use the below method for serializing and de-serializing the object

 // Serialize a single object.
    public static String serializeToJson(Bitmap bmp) {
        Gson gson = new Gson();
        return gson.toJson(bmp);
    }

    // Deserialize to single object.
    public static Bitmap deserializeFromJson(String jsonString) {
        Gson gson = new Gson();
        return gson.fromJson(jsonString, Bitmap.class);
    }

序列化对象.

 String bitmapString = Helper.serializeToJson(bmp);

传递到数据对象.

Pass to the data object.

 Data.Builder builder = new Data.Builder();
 builder.putString("bmp, bitmapString);
 Data data = builder.build();
        OneTimeWorkRequest simpleRequest = new OneTimeWorkRequest.Builder(ExampleWorker.class)
                .setInputData(data)
                .build();
        WorkManager.getInstance().enqueue(simpleRequest);

Worker 类中处理您的值.

Data data = getInputData();
String bitmapString = data.getString(NOTIFICATION_BITMAP);
Bitmap bitmap = Helper.deserializeFromJson(bitmapString);

现在,您的位图对象已在 Worker 类中准备就绪.

Now your bitmap object is ready in Worker class.

干杯!

这篇关于如何在Android的工作管理器中传递POJO类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆