Java 当按钮单击一次时,代码在firebase onDatachange中执行两次
当用户单击按钮时,我正在使用firebase onDataChange更新firebase实时数据库中的数据,代码如下。当点击按钮时,onDataChange方法中的所有代码执行一次,但编号为#1的代码“意图活动”执行两次,即使我点击按钮一次。有什么问题吗Java 当按钮单击一次时,代码在firebase onDatachange中执行两次,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,当用户单击按钮时,我正在使用firebase onDataChange更新firebase实时数据库中的数据,代码如下。当点击按钮时,onDataChange方法中的所有代码执行一次,但编号为#1的代码“意图活动”执行两次,即使我点击按钮一次。有什么问题吗 if (dataSnapshot.child(uid2).hasChild(postID2)) { //Create mat
if (dataSnapshot.child(uid2).hasChild(postID2))
{
//Create matches node
databaseReference1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child("Male").hasChild(postUser_id)) {
// view.setEnabled(false);
databaseReference2.child(user_id).child(postUser_id).setValue(username2);
databaseReference3.child(user_id).child(postUser_id).setValue(username2);
databaseReference5.child(uid1).child(user_id).setValue(new Match1(username1,currentUser_username2,postpicf,user_id));
databaseReference5.child(user_id).child(uid1).setValue(new Match1(username2,currentUser_username1,postpicm,uid1));
//#6 databaseReference6.child(uid1).push().setValue("New Friendc");
Intent profileIntent = new Intent(getActivity(), MatchView.class);
profileIntent.putExtra("postID", postUser_id);
startActivity(profileIntent);
根据您对处理过程的描述,您希望并且应该使用
addListenerForSingleValueEvent()
,而不是addValueEventListener()
,这会使侦听器保持连接。多次执行您发布的代码会导致多个活动侦听器,当数据更改时,onDataChange()
会多次触发
databaseReference1.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
...
}
@Override
public void onCancelled(DatabaseError databaseError) {
...
}
});