Italian Chiacchiericci

LordZenzo

Well-Known Member
Licensed User
Longtime User
Forse c'è, o si crea, il sistema per caricare solo le immagini dei contatti visibili in quel momento, per poi caricare di volta in volta quelli che vengono visualizzati, magari con un sistema asincrono
 

udg

Expert
Licensed User
Longtime User
Ma avete provato a vedere se il problema non è il semplice chiamare 208 volte il FindAllContacts?

Generare i pannelli per la CLV ha un peso, ma fino ad un certo punto; sette secondi sono davvero tanti, anche se.. le bitmap non aiutano.
Il caricamento "lazy" è un buon aiuto porprio perché crea i pannelli man mano che l'utente li scorre, ma sempre che la lista dei contatti sia stata scaricata all'inizio, una volta per tutte, altrimenti saremo sempre al punto di "scaricare" tutti i contatti per ogni pannellino da creare.
 

LucaMs

Expert
Licensed User
Longtime User
Oh, comunque c'è da notare che a quell'indirizzo, in quel thread di Erel, lui dice che per creare 1.000 item "complessi" (suppongo che lo siano anche più di quanto lo siano quelli di @Sagenut - si vedono in basso), senza quel metodo il caricamento completo richiederebbe circa 10 secondi, il che significa 100 item al secondo, per cui per i 208 contatti di SageUnt non dovrebbero essere necessari più di 3 secondi.
 

LucaMs

Expert
Licensed User
Longtime User
Ma avete provato a vedere se il problema non è il semplice chiamare 208 volte il FindAllContacts?

Generare i pannelli per la CLV ha un peso, ma fino ad un certo punto; sette secondi sono davvero tanti, anche se.. le bitmap non aiutano.
Il caricamento "lazy" è un buon aiuto porprio perché crea i pannelli man mano che l'utente li scorre, ma sempre che la lista dei contatti sia stata scaricata all'inizio, una volta per tutte, altrimenti saremo sempre al punto di "scaricare" tutti i contatti per ogni pannellino da creare.
Beh non credo che scarichi tutti i contatti 208 volte (chiaramente sarebbe un bug).

Giusto per essere puntigliosi (e perché può essere utile saperlo), il "caricamento lazy" crea tutti i panel necessari, non solo quelli visualizzati/visualizzabili; è il caricamento del contenuto di ciascun panel (item) che avviene invece quando necessario.
 

udg

Expert
Licensed User
Longtime User
Beh non credo che scarichi tutti i contatti 208 volte (chiaramente sarebbe un bug).

Il sospetto nasce dal fatto che nel codice vedo For Each .. in FindaAllContacts

Se quel cu.FindAll viene chiamato per ciascun contatto in modo da ricever la lista, allora è come richiedere la stessa lista 208 volte.
Pensala come una chiamata ad una funzione che ritorna la lista..

Giusto per essere puntigliosi
Giusto. Meglio non lasciare adito a dubbi. I pannelli vengono creati tutti, ma vuoti. Il popolamento è invece differito (meglio di lazy, no?)
 

Sagenut

Expert
Licensed User
Longtime User
In teoria la Causale del For non viene elaborata solo 1 volta per decidere quanti cicli devono essere eseguiti?
In ogni caso ringrazio tutti per i suggerimenti.
Inizierò con il Lazy Loading e se non darà risultati soddisfacenti cambierò la modalità di caricamento dei contatti eseguendola immediatamente all'avvio della app.
Come sempre siete di grande supporto.
 

Sagenut

Expert
Licensed User
Longtime User
Il vero problema sarà trovare, come sempre, il tempo per fare qualcosa. :eek::D
 

Sagenut

Expert
Licensed User
Longtime User
Comunque per non complicarmi troppo le cose adesso penso che semplicemente sposterò la richiesta dei permessi e il caricamento dei contatti all'avvio della app.
 

LucaMs

Expert
Licensed User
Longtime User
"Calcola" quanto tempo impieghi il caricamento dei contatti (non la loro visualizzazione).

Questo dovrebbe essere intorno al secondo, non di più; se non è così, allora è come dice @udg, li carichi 208 volte.

Comunque, so già che stanotte passerò il tempo a sviluppare un progetto di prova su questo, anziché ammattire con Penny :p
 

Sagenut

Expert
Licensed User
Longtime User
Quella riga del For è quella originale di Erel quindi non credo sia un errore.
Come ho già detto il For mi pare che venga eseguito solo 1 volta per settare il numero di cicli...... Altrimenti ogni ciclo For sarebbe un dramma.
Comunque controllerò nuovamente il flusso con il Step by Step per curiosità.
 

LucaMs

Expert
Licensed User
Longtime User
Beh quello lo sappiamo e lo sai anche tu, infatti hai sottolineato questa cosa in tuo post precedente.

E' per questo motivo che si dovrebbe usare quel caricamento lazy/differito; ma la prima cosa che devi scoprire è se prelevi i contatti una sola volta o 208 volte perché, ripeto, nel suo esempio Erel dice che per caricare in una xCLV 1.000 elementi (item) "complessi" (con immagine) servono circa 10 secondi, quindi per i tuoi 208 non dovrebbe impiegare che 2 o 3 secondi, mentre ne impiega 7.
 

Sagenut

Expert
Licensed User
Longtime User
In qualche modo ne uscirò.
Se però la cosa fosse eseguita 208 volte non mi troverei solo 208 contatti....... Ma 208 x 208...no?
Comunque per ora vi ringrazio e in qualche modo tamponerò la cosa.
Sù...... Ora avete il weekend libero. :D:D:D
 

LucaMs

Expert
Licensed User
Longtime User
Sono quasi certo di poter creare una progetto di prova in poco tempo (massimo 30 minuti); lo farò e pubblicherò, così mi dirai quanto tempo impieghi.
Unica cosa che mi farebbe perdere tempo è la richiesta del permesso, che non ho mai implementato e dovrei leggere/studiare.
 

Sagenut

Expert
Licensed User
Longtime User
@LucaMs
Grazie davvero ma non perdere tempo.
Come prova finale farò anche un ciclo definito a 200 senza il FindAllContacts..... Ma non cambierà nulla.
Il nodo è probabilmente il richiedere anche le immagini.
 

LordZenzo

Well-Known Member
Licensed User
Longtime User
Io personalmente avrei caricato la lista ad inizio codice dentro una map usando una routine apposita asincrona (usando il vecchio doevents o il nuovo sleep(0), alla fine del caricamento imposti un boleano a True

In oltre o visto il codice di erel e non mi piace che elimina le "celle" che diventano invisibili
 
Top