override fun getExtras(): Extras {
return Extras(...) //也可以把参数写死在这里
}
override fun onStopped(cancelled: Boolean) {
super.onStopped(cancelled)
//当任务结束时会回调这里
…
}
override fun doWork(): Result {
Log.d(tag,"任务执行完毕!")
return Worker.Result.SUCCESS
}
}
##### 向任务添加参数
1. 在Request中传参:
```
val data=Data.Builder()
.putInt("A",1)
.putString("B","2")
.build()
val request2 = PeriodicWorkRequestBuilder<MyWorker>(24,TimeUnit.SECONDS)
.setInputData(data)
.build()
```
2. 在Worker中使用:
```
class MyWorker:Worker() {
val tag = javaClass.simpleName
override fun doWork(): Result {
val A = inputData.getInt("A",0)
val B = inputData.getString("B")
return Worker.Result.SUCCESS
}
}
```
当然除了上述代码中的方法之外,我们也可以重写父级的`getExtras()`,并在此方法中把参数写死再返回也是可以的。
这里WorkManager就有一个不是很人性的地方了,那就是**WorkManager不支持序列化传值**!这一点让我怎么说啊,intent和Bundle都支持序列化传值,为什么偏偏这货就不行?那么如果传一个复杂对象还要先拆解吗?
##### 任务的返回值
很类似很类似的,任务的返回值也很简单:
override fun doWork(): Result {
val A = inputData.getInt("A",0)
val B = inputData.getString("B")
val data = Data.Builder()
.putBoolean("C",true)
.putFloat("D",0f)
.build()
outputData = data//返回值
return Worker.Result.SUCCESS
}
doWork要求最后返回一个Result,这个Result是一个枚举,它有几个固定的值:
* FA