- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个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 的生命周期相应地删除它们。
让你的听众保持活跃,你最终会浪费资源。所以:
onStart
中添加了监听器,则必须在 onStop
中将其删除。onResume
中添加了监听器,则必须在 onPause
中将其删除。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/
我正在使用 Google Firestore对于 Android 数据库,想知道 onSuccessTask 和 addOnSuccessListener 之间的区别。 例如,这是我更新一个 Fire
我想设置一个按钮,当我按下按钮时,然后获取位置。 FusedLocationProviderClient userLocationProviderClient = LocationServices.g
这个blog中有提到 If a listener is registered like this in an Activity, and it's not removed before the Act
我刚刚更新了我的位置 API 以使用 FusedLocationProviderClient 但我遇到了这个问题,当我关闭和打开 GPS 时,我总是得到空位置: val fusedLocationPr
我正在尝试从我的应用程序获取更新的位置。但是我的应用程序不会检查此代码块 public void onSuccess(Location location){} 内 mFusedLocationProv
我是一名优秀的程序员,十分优秀!