를 검색 로그는 테스트를 위해, 로그 인쇄는 다음과 같이중포 기지 데이터베이스 리스너는 잘못된 정보
지금은8월 1일에서 19일까지 : 44 : 57.547 17531-17531/com.firebase.android D/PROFILE : ffggg @ gmailcom 01-19 08 : 44 : 57.547 17531-17531/com.firebase.android D/PROFILE : test22 @ gmailcom 01-19 08 : 45 : 15.446 17531-17531/com.firebase.android D/PROFILE : 8o93lpc5clhrsrst852nfm2g75 01 -19 08 : 45 : 15.446 17531-17531/com.firebase.android D/PROFILE : a18g2u5h525nqthpqsn6askp75 01-19 08 : 45 : 15.448 17531-17531/com.firebase.android D/PROFILE : ffggg @ gmailcom 01-19 08 : 45 : 15 : 4950 17531-17531/com.firebase.android D/PROFILE : test22 @ gmailcom 01-19 08 : 45 : 15.587 17531-17531/com.firebase.android D/PROFILE : 8o93lpc5clhrsrst852nfm2g75 01-19 08 : 45 : 15.587 17531-17531/com.firebase.android D/PROFILE : a18g2u5h525nqthpqsn6askp75 01-19 08 : 45 : 15.588 17531-17531/com.firebase.android D/PROFILE : ffggg @ gmailcom 01-19 08:45 : 15.588 17531-17531/com.firebase .android D/PROFILE : test22 @ gmailcom
[email protected]
의 아이들을 얻어야한다 (그리고 내가 문자열이 null 또는 비어 있지 않은 체크 한) UID가
[email protected]
입니다 가정. 그러나 여기에서는 노드가 uID가 아닌 경우 모든 노드를 참조로 가져옵니다 (그러나 자식은 아닙니다). 나는 내가 수천 개의 레코드를 가지고 있다면 불필요한 많은 데이터를 다운로드하기 때문에 이것을 원하지 않는다.
내가 잘못한 일을하고 있습니까? 아니면 Listbase가 firebase에 의해 구현 되었습니까?
업데이트 1
내가 응용 프로그램 서랍에서 응용 프로그램을 열 때 내가 원하는 노드의 올바른 아이를 얻을 것이다. 그러나이 액티비티의 다른 액티비티로 갈 때, 다른 클래스에서 듣고있는 노드에 자식을 추가 한 다음 그 노드에서 수신중인 클래스로 돌아가서 이상한 출력을 얻습니다. 여기
내가 노드에 추가하는 기타 활동에 대한 코드입니다 :pullNewImage = myDB.getReference("testNode");
pullNewImage.child(uID).child(randomName).setValue(ServerValue.TIMESTAMP);
업데이트 2
내 업데이트 리스너 코드 :
//global var
ValueEventListener profileListener = null;
//....
profileListener = ref.child(userEmail).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
Log.d("PROFILE", singleSnapshot.getKey());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
//...
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
auth.removeAuthStateListener(mAuthListener);
}
if(profileListener != null)
ref.removeEventListener(profileListener);
}
나는 이미 시도했다 코드에서 사용하지 않도록 설정, 동기화되지 않습니다 그냥 다시 시도해 보았습니다. 작동하지 않습니다. 응용 프로그램을 시작하면 올바른 노드 아래의 자식이 인쇄되고 원하는만큼 아무것도 인쇄되지 않습니다. 그 때 나는 다른 액티비티의 노드에 위의 블록 인용문에서 언급 한 이상한 결과를 얻는다. – TerribleCoderSad
왜 스레드에 리스너가 있는가? 리스너는 Async ..를 실행합니다. 다른 이유가 없다면 제거 할 수 있습니다. –
또한 변경 사항을 계속 수신하거나 데이터를 한 번만 가져오고 싶습니까? –