我试图对工人类执行一次工作,其中 doWork 方法将只计算一个数字 Call it I。这将循环 100 次,并且在每次迭代中,计数器将继续增长。
我为这项工作添加了一个约束,即网络约束连接。
我想每次都计数,如果我关闭网络,计数将停止。打开网络后,我希望计数从以前的相同计数值继续工作
每次我关闭网络并再次打开它时,计数再次从零开始,并且之前计数器中的值没有保存在我在 worker 中定义的全局变量 I 中。这就像不采用那里定义的最后一个值。
我的工人阶级
class WorkerClass(appContext: Context, workerParams: WorkerParameters):
Worker(appContext, workerParams) {
var i:Int=0
override fun doWork(): Result {
while (i < 100) {
if (this.isStopped){
Log.i("Hello","I Stopped A")
return Result.retry()
}
i++
Log.i("Hello", "The value of counter is :"+i.toString())
Thread.sleep(200)
}
return Result.success()
}
}
我的简单工作创建者:(传递了一个数据,我现在不使用它,因此您可以忽略它。
val constrints=Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
val k = sceondTxt.text.toString()
val data=Data.Builder()
data.putString("Counter Value",k)
val oneReq:WorkRequest= OneTimeWorkRequestBuilder<WorkerClass>().setConstraints(constrints).setInputData(data.build())
.build()
正如你所看到的,我将 I 定义为 Integer,并且工作的每一次迭代 I 都在增长。但是当我关闭连接并再次打开它时,我再次为 0,并且没有从上次运行的 doWork 中保存。
i 的定义不是全局的吗?系统不会将存储在 doWork 中的最后一个值 I 用于以后的迭代?
如何保存我的 doWork 中某些东西的值以便以后再次使用它(在满足约束之后)而不是作为默认值?