我想从聊天活动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版本中运行良好,但在android10中不会调用oncomplete方法。我也尝试过更新作业调度器和工作管理器中的孩子,但没有成功。
我到处都看到firebasedatabase操作是在后台线程上异步执行的
事先谢谢你的帮助。
1条答案
按热度按时间5us2dqdw1#
我创建了如下所示的工作管理器,覆盖了addonfailurelistener和addoncanceledlistener方法及其现在的工作状态。
给下面的工作经理打电话