gpt4 book ai didi

java - 我是否需要关闭 addOnSuccessListener 才能保存到数据库(setValue)?

转载 作者:行者123 更新时间:2023-12-01 19:38:25 25 4
gpt4 key购买 nike

这个blog中有提到

If a listener is registered like this in an Activity, and it's not removed before the Activity is destroyed, there is a possibility of an Activity leak.

我是否应该删除此监听器以在 onStop() 中将数据保存到实时数据库中?还是保存后会自动删除?

    databaseReference.setValue(chatMessage)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
// Codes for successful!
}
});

最佳答案

在谈论 Firebase 实时数据库监听器时,是的,您需要根据 Activity 的生命周期相应地删除它们。

让你的听众保持活跃,你最终会浪费资源。所以:

  1. 如果您在 onStart 中添加了监听器,则必须在 onStop 中将其删除。
  2. 如果您在 onResume 中添加了监听器,则必须在 onPause 中将其删除。
  3. 如果您在 onCreate 中添加了监听器,则必须在 onDestroy 中将其删除。

但请记住,onDestroy不会总是被调用,因此最后一个选项并不总是一个好的选择。

删除列表器的最简单方法是将 Activity 的实例作为第一个参数传递给 addOnSuccessListener() 方法。为此,请参阅任务的 addOnSuccessListener(Activity activity, OnSuccessListener listener) :

Adds an Activity-scoped listener that is called if the Task completes successfully.

The listener will be called on the main application thread. If the Task has already completed successfully, a call to the listener will be immediately scheduled. If multiple listeners are added, they will be called in the order in which they were added.

The listener will be automatically removed during onStop().

关于java - 我是否需要关闭 addOnSuccessListener 才能保存到数据库(setValue)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56556122/

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