Firebase android come get i dati dall'elenco di chiavi contemporaneamente

Sto usando la libreria di geofire firebase per recuperare le chiavi in ​​base alla posizione ma a causa di migliaia di chiavi vengono restituiti in evento onKeyEntered () each volta che devo prendere la chiave di riferimento per il firebase e tornare all'object e impostarlo in listview diventando molto lento. Ho provato a commentare tutti gli altri lavori in onKeyEntered () per vedere quanto veloce il geofire è allora sono rimasto sorpreso con 900 mibbre di tutte le chiamate ricevute.

Quindi ora che cosa è il modo ottimizzato per get i dati da firebase utilizzando la chiave passata in callback onKeyEntered () e impostarla in listview in modo che anche per migliaia di voci di elenco di inserimenti dovrebbe caricare rapidamente

  • Frammenti e problemi di schermo rotanti
  • Come impostare un'etichetta diversa per il lancio anziché il titolo di attività?
  • Alternativa a hasPermanentMenuKey () per Android 2.3.3
  • `/ storage / emulated / legacy /` vs `/ storage / emulated / 0 /` vs `dati / dati / myApp '
  • come get il codice json nella mia applicazione
  • Fare clic su ViewGroup su Android
  • Ho pensato di AsyncTask in each callback dare il lavoro di recupero dati a AsyncTask e procedere con il tasto di richiamata successiva e fare lo stesso, ma non sicuro che è corretto.

    O caricare solo pochi e poi caricare come scorrimento è anche una buona idea, ma geofire restituisce le chiavi da tutto il database, quindi non esiste alcuna possibilità per get solo pochi ultimi, quindi non so come implementarlo.

    Questo è quello che sto cercando ma la visualizzazione di elenco carichi molto lenta.

    @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(); } }); } 

  • Errore strano dopo l'aggiornamento a Android 4.2.2 - L'attività ha perduto IntentReceiver
  • Android - Imansible controllare tutti i CheckBox in un elenco di listini personalizzato a causa del problema di riciclo?
  • Maven con Android - generazione di file R.java (Eclipse)
  • Come creare un'anteprima video in android?
  • findFragmentById restituisce sempre un null
  • Avvio di Android che innesca l'avvio dell'applicazione
  • One Solution collect form web for “Firebase android come get i dati dall'elenco di chiavi contemporaneamente”

    La questione del tipo "come al meglio" è notoriamente difficile da rispondere. Ma dò alcuni suggerimenti riguardo al comportmento generale del sistema che potresti non essere a conoscenza.

    1. il client Firebase Database interagisce con la networking e il disco su un thread separato. Quando i dati sono disponibili per il tuo client, invita i tuoi gestori sul thread principale / UI. Ciò significa che mettere le chiamate in un AsyncTask è utile solo se si farà un lavoro significativo nel callback.
    2. il client Firebase database distribuisce le chiamate al server su una singola connessione. Per ulteriori informazioni su come ciò influenza le performance, consulta la sezione Accelerare i recuperi dei post per la mia networking di social network utilizzando la query anziché osservare ripetutamente un singolo evento .
    3. caricare migliaia di oggetti in un dispositivo mobile in networking non è in genere una buona idea. Dovresti caricare solo i dati che mostrerai all'utente e migliaia di articoli è ben al di là di ciò che può essere ragionevolmente presentato su uno schermo mobile. Quando si sviluppa un'applicazione basata sulla posizione, è ansible visualizzare una mappa in cui l'utente indica un hotspot e si utilizza Geoqueries per richiedere solo gli elementi attorno a tale spot.
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.