android - 实现 WorkManger 时如何向 Worker 类发送 byteArray?
问题描述
我正在尝试将一个 byteArray 作为输入数据发送到 WorkRequest 中的我的 Worker 类。有没有办法在工人类中发送 byteArray 并接收相同的内容?
我试图发送 IntArray 并且我能够达到结果。
执行:
//work request
val workRequest = OneTimeWorkRequest.Builder(MyWroker::class.java)
.setInputData(createInputData())
.build()
//create Input Data for work request
fun createInputData(): Data {
return Data.Builder()
.putString(FIRST_KEY, "My value")
.putInt(SECOND_KEY, 5)
.putByteArray(getByteArray())
.build()
}
I am getting an error cannot resolve method getByteArray(). I have read the documentation of Data class and there is no such method available.
解决方案
WorkManager v2.1.0-alpha01添加了将字节和字节数组存储和检索到Data
对象的支持。
您可以添加 WorkManager 的 KTX 并在您的工作请求中使用和(或使用对象的OneTimeWorkRequestBuilder<>()
方法):workDataOf()
putByteArray()
Data.Builder
val workRequest = OneTimeWorkRequestBuilder<MyWorker>()
.setInputData(createInputData())
.build()
private fun createInputData() = workDataOf(
FIRST_KEY to "My value",
SECOND_KEY to byteArrayOf(0x2E, 0x38))
然后使用以下方法检索您的工作人员中的字节数组:
class MyWorker(ctx: Context, params: WorkerParameters) : Worker(ctx, params) {
override fun doWork(): Result {
val myByteArray = inputData.getByteArray()
// Do something with the ByteArray
Result.success()
}
}
推荐阅读
- javascript - 找不到本地存储的 json 文件
- python - 将具有多种数据类型(字符串和整数)的列表转换为python中的字符串
- php - php中的多维关联数组
- javascript - 显示日期选择器
- python-3.x - 气流 {logging_mixin.py:84} 警告 - --- 记录错误 -
- python - 如何检查列表列表是否包含值?
- xamarin.forms - 使用 Prism.Autofac 库 Xamarin .Net Standard 2.0 时 App.Current.MainPage 为空
- html - 向模态窗口添加滚动条
- javascript - localStorage 在 react js chrome 中不起作用
- python - 对本地文件夹中的所有文件重复 BeautifulSoup 抓取