Android取消任务<void>
Android cancel Task<void>
我有一个任务需要取消。 “client.startSmsRetriever()”returns 任务。没有 cancel()、remove() 等方法。我该怎么做?
val task = client.startSmsRetriever()
task.addOnSuccessListener {
Log.d("TEST VERIFICATION", "startRetriever: Success")
val smsBroadcastReceiver = SmsBroadcastReceiver()
smsBroadcastReceiver.setSMSListener(object : SmsBroadcastReceiver.SmsReceiverListener {
override fun onSMSReceived(verificationCode: String) {
binding.verificationCodeEditText.setText(verificationCode)
cachedActivity.unregisterReceiver(smsBroadcastReceiver)
}
})
val filter = IntentFilter(SmsRetriever.SMS_RETRIEVED_ACTION)
cachedActivity.registerReceiver(smsBroadcastReceiver, filter)
}
task.addOnFailureListener { ex ->
Log.e("TEST retrieveSMS", ex.message.toString())
}
遗憾的是,任务一旦开始就无法取消。 API 文档没有提到这种方法。
如果您出于某种原因打算取消它,我建议您研究为什么它需要取消,而不是在这种情况下首先开始任务。或者在最坏的情况下,您必须在任务完成后撤消该操作。
您可以查看 API 指南,最好的办法是添加一个失败侦听器,您已经需要它来决定下一步。
我有一个任务需要取消。 “client.startSmsRetriever()”returns 任务。没有 cancel()、remove() 等方法。我该怎么做?
val task = client.startSmsRetriever()
task.addOnSuccessListener {
Log.d("TEST VERIFICATION", "startRetriever: Success")
val smsBroadcastReceiver = SmsBroadcastReceiver()
smsBroadcastReceiver.setSMSListener(object : SmsBroadcastReceiver.SmsReceiverListener {
override fun onSMSReceived(verificationCode: String) {
binding.verificationCodeEditText.setText(verificationCode)
cachedActivity.unregisterReceiver(smsBroadcastReceiver)
}
})
val filter = IntentFilter(SmsRetriever.SMS_RETRIEVED_ACTION)
cachedActivity.registerReceiver(smsBroadcastReceiver, filter)
}
task.addOnFailureListener { ex ->
Log.e("TEST retrieveSMS", ex.message.toString())
}
遗憾的是,任务一旦开始就无法取消。 API 文档没有提到这种方法。
如果您出于某种原因打算取消它,我建议您研究为什么它需要取消,而不是在这种情况下首先开始任务。或者在最坏的情况下,您必须在任务完成后撤消该操作。
您可以查看 API 指南,最好的办法是添加一个失败侦听器,您已经需要它来决定下一步。