gpt4 book ai didi

android - 在 RxJava2 中将 Listener 转换为 Single

转载 作者:行者123 更新时间:2023-11-29 14:43:39 24 4
gpt4 key购买 nike

我正在使用 Play 服务 Auth api Phone到目前为止,我已经完成了

  fun startSmsListener() {
val client = SmsRetriever.getClient(applicationContext /* context */);
val task = client.startSmsRetriever();
task.addOnSuccessListener(object : OnSuccessListener<Void> {
override fun onSuccess(p0: Void?) {
//do somethin
}

})
task.addOnFailureListener(object : OnFailureListener {
override fun onFailure(p0: Exception) {
//Handle error
}

})
}

现在我想将其放入 SmsManager 类并将其转换为 Single/Observable,以便我可以在我的 View 模型中以 react 方式处理它。我该怎么做?

到目前为止我得到了这个:

var single = Single.create(SingleOnSubscribe<Void> { e ->
val task = client.startSmsRetriever()
task.addOnSuccessListener {
e.onSuccess(it)
}
task.addOnFailureListener {
e.onError(it)
}
})

但我不确定这段代码是否正确,我是否缺少某些东西,比如在处理后删除监听器。

有什么帮助吗?

最佳答案

您对“ bool ”值感兴趣 - 连接或未连接,因此您应该使用 Completable 而不是 Single:

Completable.create { emitter -> 
val client = SmsRetriever.getClient(applicationContext)
val task = client.startSmsRetriever()
task.addOnSuccessListener { emitter.onComplete() }
task.addOnFailureListener { emitter.tryOnError(it) }
}

关于android - 在 RxJava2 中将 Listener 转换为 Single,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50037685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com