gpt4 book ai didi

android - 如何在 Android 的工作管理器中传递 POJO 类?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:07:54 26 4
gpt4 key购买 nike

我们如何通过工作管理器的setData方法将Serializable对象传递给工作管理器?有没有办法通过传递对象来处理工作管理器?

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 is not valid class。

注意:我想在 work manager 中传递 POJO 类,并在 doWork 方法中从 work manager 获取 InputData。

最佳答案

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

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

Add dependency in your Gradle file

Gradle :

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

使用下面的方法序列化和反序列化对象

 // 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);
}

Serialize object.

 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);

Handle your value in Worker class.

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

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

干杯!

关于android - 如何在 Android 的工作管理器中传递 POJO 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51018299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com