1

在 Android Jetpack WorkManger 中,在 Worker 中定义一个输出数据:

new Data.Builder().putLong(xxx);

putLong, putString, putBoolean,但是没有定义一个函数来放置一个Object.

如何a Entity Object在 Worker 中输出。

public class DownloadDB extends Worker {
    private static final String TAG = "DownloadDB";
    private List<ChoiceTestItem> mChoiceTestItems;

    public DownloadDB(@NonNull Context context, @NonNull WorkerParameters workerParams) {
        super(context, workerParams);
    }

    @NonNull
    @Override
    public Result doWork() {
        downChoiceTestItemFromNetwork();
        HashMap<String, Object> map = new HashMap<>();

        //Wrong Code here!!!
        map.put("a", mChoiceTestItems);
        @SuppressLint("RestrictedApi") Data data = new Data.Builder().putAll(map).build();

        return Result.success(data);
    }
...
4

1 回答 1

1

没有定义一个函数来放置一个对象。

正确的。您不能将任意对象放入Data. 正如文档所述:“这是一个轻量级容器,不应被视为您的数据存储”。不允许任意数据类型是他们强制执行此操作的一种方式。

如何在 Worker 中输出实体对象。

如果“实体对象”是指 Room @Entity,请将实体放入数据库中。将主键或其他标识符放入 中Data,并使用它稍后从数据库中检索实体。

于 2020-05-31T17:19:43.857 回答