Firebase,是否可以在没有传递活动引用的情况下将verifyPhoneNumber放置在活动之外?

tru*_*gle 5 java android phone-number firebase firebase-authentication

我正在尝试实施Firebase电话号码身份验证。官方文件说我需要打电话

PhoneAuthProvider.getInstance().verifyPhoneNumber(
    phoneNumber,        // Phone number to verify
    60,                 // Timeout duration
    TimeUnit.SECONDS,   // Unit of timeout
    this,               // Activity (for callback binding)
    mCallbacks);        // OnVerificationStateChangedCallbacks
Run Code Online (Sandbox Code Playgroud)

并通过我的活动参考进行回调绑定。

docs中还有另一个重载方法,它接受TaskExecutors.MAIN_THREAD(用于执行OnVerificationStateChangedCallbacks回调的Executor )而不是活动引用。

那就是我所需要的。在这种情况下

phoneAuthProvider.verifyPhoneNumber(
        phone,
        1,
        TimeUnit.MINUTES,
        TaskExecutors.MAIN_THREAD,
        callbacks,
        resendingToken
);
Run Code Online (Sandbox Code Playgroud)

该代码运行完美。但是问题是:回调在无限长的背景下继续工作。我没有在文档中找到任何方法来停止这些回调。

那么,当我不再需要这些回调时,该如何手动删除它们呢?

Isq*_*rdo 3

我认为你可以使用 TaskExecutors.MAIN_THREAD 代替。

PhoneAuthProvider.getInstance().verifyPhoneNumber(
    phoneNumber, // Phone number to verify
    60, // Timeout duration
    TimeUnit.SECONDS, // Unit of timeout
    TaskExecutors.MAIN_THREAD, // Executor
    verifyNumberCallback
)
Run Code Online (Sandbox Code Playgroud)