如何在 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 数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用Android Jetpack导航时禁用导航图标

如何在 Android Jetpack Compose 中将 Dp 转换为像素?

如何在 Android Jetpack Compose 中使用字符串资源?

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

如何使用 Jetpack Compose UI 在 Android 上正确跟踪屏幕视图?

如何在 Android Jetpack Compose 中结合使用 LazyColumn stickyHeader 和 Paging?