【发布时间】:2019-07-02 13:28:31
【问题描述】:
Firebase -> PhoneAuthProvider -> VerifyPhoneNumber 正在泄漏。我相信,它可能是 OnVerificationStateChangedCallbacks,我们在呼叫时将其发送给 verifyPhoneNumber。
重现步骤:
- 启动应用程序
- 为基于电话的身份验证选择“PhoneAuthActivity”
- 发送电话号码。
- 点击返回。
点击返回时出现泄露的内存
有人有同样的问题吗?任何解决方案?
public void FirebasePhoneUser(String phoneNumber) {
mCallback = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
Log.d("Completed","");
}
@Override
public void onVerificationFailed(FirebaseException e) {
Log.d("Error","");
}
@Override
public void onCodeSent(String verificationId,
PhoneAuthProvider.ForceResendingToken forceResendingToken) {
Log.d("onCodeSent", "");
}
};
phoneAuthProvider = PhoneAuthProvider.getInstance();
phoneAuthProvider.verifyPhoneNumber(
phoneNumber,
30,
TimeUnit.SECONDS,
TaskExecutors.MAIN_THREAD,
mCallback
);
}
【问题讨论】:
-
您是通过 LeakCanary 发现的,还是什么?我不知道解决方案,我只是想确保您已正确识别问题。
-
是的,使用 LeakCanary
-
如果您发现 Firebase SDK 存在明显问题,请向 Firebase 支持提交错误报告,以便他们尝试重现该问题并收集信息。 Stack Overflow 对此无能为力。 support.google.com/firebase/contact/support
-
有一个类似的问题始于 2017 年,但没有解决方案。这就是我在这里写它的原因。
-
不幸的是,这不是很清楚。请记住,仅仅因为在活动运行后内存保持分配状态并不意味着存在泄漏,因为由于调用验证电话号码,状态可能会发生变化(以及内存使用量的变化)。您认为泄漏的是哪种类型的内存?你觉得它是如何被泄露的?你认为应该怎么做才能消除泄漏?
标签: java android firebase-authentication