如何在 Android Jetpack Workmanager 中输入和输出 AN Object 数据?

Posted

技术标签:

【中文标题】如何在 Android Jetpack Workmanager 中输入和输出 AN Object 数据?【英文标题】:How to input and output A Object data in Android Jetpack Workmanger? 【发布时间】:2020-09-19 00:32:16 【问题描述】:

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

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

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

如何在 Worker 中输出a Entity Object

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

1.这是一个轻量级容器,不应将其视为您的数据存储 2. 将实体放入您的数据库中 谢谢。

以上是关于如何在 Android Jetpack Workmanager 中输入和输出 AN Object 数据?的主要内容,如果未能解决你的问题,请参考以下文章