생활
firebase를 이용한 안드로이드 스튜디오 공부중에 순서에 대해 이해가 안가는 것이 있습니다.
viewHolder.chatStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
destinationUid = userModels.get(i).getUid();
ChatModel chatModel = new ChatModel();
chatModel.users.put(uid,true);
chatModel.users.put(destinationUid,true);
if(chatRoomdUid == null){
FirebaseDatabase.getInstance().getReference().child("chatRooms").push().setValue(chatModel).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
checkChatRoom();
Log.d("생성됨1", chatRoomdUid + " 1 ");
}
});
}
Intent intent = new Intent(v.getContext(),ChatActivity.class);
intent.putExtra("destinationUid",userModels.get(i).getUid());
chatRoomdUid = null;
Log.d("생성됨2", chatRoomdUid + "2");
context.startActivity(intent);
}
});
void checkChatRoom(){
FirebaseDatabase.getInstance().getReference().child("chatRooms").orderByChild("users/"+uid).equalTo(true).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot item : dataSnapshot.getChildren()){
ChatModel chatModel = item.getValue(ChatModel.class);
if(chatModel.users.containsKey(destinationUid)){
chatRoomdUid = item.getKey();
Log.d("생성됨3", chatRoomdUid + "3");
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
제가 chatstart에 해당하는 것을 처음 클릭 했을 때
logcat에 나오는 log는 생성됨 1 다음에 생성됨 3이 나오고 끝입니다.
그리고 chatstart를 두번째 클릭하면 생성됨 2가 나옵니다.
제가 이해가 되지 않는 부분은 두가지 입니다.
1.처음 클릭 했을 때, onclick 부분의 if문이 끝나고 startActivity( intent)를 실행하기 전에 왜 생성됨2가 나오지 않는지 알고 싶습니다.
onclick 부분의 if문에서 checkChatRoom() 다음에 생성됨 1인데 왜 생성됨3의 로그가 아닌 생성됨 1의 로그가 먼저 나오는 것인가요?
아무리 생각해도 순서가 이해가 되지 않습니다. 도움 부탁드릴게요..
*destinationUid, chatRoomUid 의 초기값은 null입니다.
1개의 답변이 있어요!