【发布时间】:2020-12-30 13:45:45
【问题描述】:
我想通过聊天活动 onResume 和 onPause 方法更改 Firebase 实时数据库中的状态(在线/离线)。
我的代码如下:
@Override
protected void onResume() {
super.onResume();
updateStatus(Constants.getInstance().userStatusOnline);
}
@Override
protected void onPause() {
super.onPause();
updateStatus(Constants.getInstance().userStatusOffline);
}
public void updateStatus(String status) {
Log.e(TAG, "## updateStatus status : " + status);
if (myUserId != null) {
databaseReference = FirebaseDatabase.getInstance().getReference(Constants.getInstance().fb_table_user).child(myUserId);
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("status", status);
databaseReference.updateChildren(hashMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.e(TAG, "******* updateStatus onComplete isSuccessful :: " + task.isSuccessful());
}
});
}
}
在其他安卓版本中运行良好,但 在 Android 10 中未调用 onComplete 方法。 我还尝试在作业调度程序和工作管理器中更新Children,但没有成功。
我到处读到 FirebaseDatabase 操作在后台线程上异步执行
提前感谢您的帮助。
【问题讨论】:
-
你实现onCancelled()了吗?控制台中是否打印了一些内容?
-
如果除了成功侦听器之外,您不使用失败侦听器检查错误,您将永远不会知道是否出了问题。
标签: java android firebase firebase-realtime-database android-10.0