firebase geofireライブラリを使用して、場所に基づいてキーを取得しますが、キー参照firebaseを使用するたびに、数千のキーがonKeyEntered()イベントで返されるためです。オブジェクトを元に戻し、リストビューを非常に遅くするように設定します。私はonKeyEntered()の他のすべての仕事をコメントして、geofireがどれくらい速いかを見てみました。受け取った900ミリ秒のコールバックをすべて驚かせました。Firebase androidデータを取得する方法
だから今のエントリのリストビューの何千も速い
Iをロードする必要がありさえのためになるようにonKeyEntered()コールバックに渡されたキーを使用してfirebaseからデータを取得し、リストビューに設定するための最良の最適化の方法は何ですかすべてのコールバックで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();
}
});
}
私は以下にいくつかのヒントを書いたが、一般的にこの質問は広すぎる。 1つの質問に限定してください。 "なぜアイテムは私が予想したよりも早く戻ってくるの?" (これは[要求がパイプライン化されているためです](http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of -obse/35932786#35932786)btw)。 –