firebase geofire 라이브러리를 사용하여 위치 기반의 키를 가져 오지만 키 기반 firebase를 가져올 때마다 onKeyEntered() 이벤트에서 수천 개의 키가 반환됩니다. 개체를 다시 가져 와서 listview가 매우 느리게 설정되도록하십시오. 나는 onKeyEntered()에서 다른 모든 작업에 대한 주석을 달아서 geofire가 얼마나 빠른지를 보았습니다. 900 밀리의 모든 콜백을 받았다는 것에 놀랐습니다.Firebase android 데이터를 가져 오는 방법 키 목록 일괄 처리
그래서 지금 항목의 목록보기 수천 빠른
I를로드해야합니다 위해 onKeyEntered() 콜백에 전달 된 키를 사용하여 중포 기지에서 데이터를 얻을 그래서 심지어 목록보기하도록 설정하는 가장 최적화 된 방법은 무엇인지 모든 콜백에서 AsyncTask를 생각하면 인출 데이터가 AsyncTask에 전달되고 다음 콜백 키로 진행되고 똑같이 수행되지만 올바른지는 확실하지 않습니다.
또는 몇 가지만로드 한 다음 스크롤을로드하는 것도 좋은 생각입니다.하지만 geofire는 데이터베이스 전체에서 키를 반환하므로 최신 정보를 얻을 수있는 옵션이 없어 구현 방법이 확실하지 않습니다.
이것은 내가 시도하지만 목록보기로드가 매우 느립니다. 악명 대답하기 어렵다 "최상의 방법"유형의
@Override
public void onKeyEntered(String key, GeoLocation location) {
Log.d("geoevent", key);
mDatabaseTemp = FirebaseDatabase.getInstance().getReference("/posts/" + key);
mDatabaseTemp.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Post post = new Post();
post = dataSnapshot.getValue(Post.class);
mPosts.add(post);
mPostAdapter.notifyDataSetChanged();
mRecycler.smoothScrollToPosition(mPosts.size() - 1);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getActivity(), "error" + databaseError, Toast.LENGTH_LONG).show();
}
});
}
아래에 몇 가지 힌트가 있지만 일반적으로이 질문은 너무 광범위합니다. 단일 질문으로 제한하십시오. "왜 아이템이 예상보다 빨리 돌아오고 있습니까?" (요청이 파이프 라인되어 있기 때문에) (http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of -obse/35932786 # 35932786) btw). –