实现WorkManager时如何向Workerclass发送字节数组?
How to send a byteArray to Worker class when implementing WorkManger?
我正在尝试将 byteArray 作为输入数据发送到 WorkRequest 中的我的 Worker Class。有没有一种方法可以发送 byteArray 并在工作人员内部接收相同的内容 class?
我已经尝试发送 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.
在 Data
对象中存储和检索字节和字节数组的支持已添加到 WorkManager v2.1.0-alpha01。
您可以添加WorkManager的KTX并在您的工作请求中使用OneTimeWorkRequestBuilder<>()
and workDataOf()
(或使用Data.Builder
对象的putByteArray()
方法):
val workRequest = OneTimeWorkRequestBuilder<MyWorker>()
.setInputData(createInputData())
.build()
private fun createInputData() = workDataOf(
FIRST_KEY to "My value",
SECOND_KEY to byteArrayOf(0x2E, 0x38))
然后使用类似以下内容在您的 worker 中检索字节数组:
class MyWorker(ctx: Context, params: WorkerParameters) : Worker(ctx, params) {
override fun doWork(): Result {
val myByteArray = inputData.getByteArray()
// Do something with the ByteArray
Result.success()
}
}
我正在尝试将 byteArray 作为输入数据发送到 WorkRequest 中的我的 Worker Class。有没有一种方法可以发送 byteArray 并在工作人员内部接收相同的内容 class?
我已经尝试发送 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.
在 Data
对象中存储和检索字节和字节数组的支持已添加到 WorkManager v2.1.0-alpha01。
您可以添加WorkManager的KTX并在您的工作请求中使用OneTimeWorkRequestBuilder<>()
and workDataOf()
(或使用Data.Builder
对象的putByteArray()
方法):
val workRequest = OneTimeWorkRequestBuilder<MyWorker>()
.setInputData(createInputData())
.build()
private fun createInputData() = workDataOf(
FIRST_KEY to "My value",
SECOND_KEY to byteArrayOf(0x2E, 0x38))
然后使用类似以下内容在您的 worker 中检索字节数组:
class MyWorker(ctx: Context, params: WorkerParameters) : Worker(ctx, params) {
override fun doWork(): Result {
val myByteArray = inputData.getByteArray()
// Do something with the ByteArray
Result.success()
}
}