Italian Chiacchiericci

Sagenut

Expert
Licensed User
Longtime User
Molto più normale di chi si illuda di guadagnare sviluppando app
Eppure qualcuno ci riesce.
E non è che lo invidi, però lo Ammiro davvero molto.
Perchè un conto è sapere che puoi fermarti un pò o rimandare quando incontri un ostacolo.
Ben diverso è sapere di doverlo fare per forza perchè hai una scadenza o un bug grave che affligge qualcuno che ti ha pagato/stà pagando.
A quel punto è stressante tanto quanto un altro lavoro.
Da ammettere che lavorare tra le mura di casa o comunque un posto piacevole già cambia la frittata in buona parte.
Certo potrei invidiare i creatori di Whatsapp o cose simili......alla luce di quei guadagni vedi come mi viene la voglia di fare.......o di assumere e maltrattare chi per me. :D
Se avessi iniziato seriamente 25 anni fà........forse oggi...........boh.....
 

Sagenut

Expert
Licensed User
Longtime User
Buongiorno!
Come mi era stato suggerito, probabilmente il modo migliore per gestire i contatti è quello di far caricare inizialmente solo i nomi.
Questo impiega meno di 1 secondo.
Poi con una sub asincrona iniziare a popolare le immagini, ma nel frattempo la lista sarebbe già usabile e mentre cerchi il contatto che vuoi le immagini saranno forse già arrivate tutte.
In questo modo potrei anche permettermi di ricaricare la lista ad ogni accesso al panel per ovviare anche alla eventualità che tra un accesso e l altro l'utente non abbia aggiunto o modificato qualcosa in rubrica.
La fase lenta è proprio il recupero delle immagini.
 

LucaMs

Expert
Licensed User
Longtime User
Ciao.

La fase lenta è proprio il recupero delle immagini
Sì ma tu stesso hai provato il mio codice e dichiarato che impiega 2 o 3 secondi; inoltre, fa più o meno la stessa cosa, solo che anziché caricare solo le immagini all'occorrenza, carica ciò che serve per l'Item.

Non è che se aggiungi 4 o 5 label impiegherà di più, eh, proprio perché il rallentamento è dovuto alle immagini.

per ovviare anche alla eventualità che tra un accesso e l altro l'utente non abbia aggiunto o modificato qualcosa in rubrica.
Per questo, metti un tasto / icona "Ricarica", altrimenti davvero diventa lunga.
 

Sagenut

Expert
Licensed User
Longtime User
Il tuo esempio funziona molto meglio del mio infatti impiega nettamente la metà del tempo.
Sono un pò indeciso su quale metodo usare.
Sarebbero tutti studi ed esperimenti per me.
Potrei sicuramente usare anche il tuo aggiungendo lo Sleep(0) per fare in modo che i pannelli appaiano immediatamente mentre si popolano.
A quel punto nel lasso di 2-3 secondi nessuno farebbe in tempo a scegliere qualcosa prima che la lista sia popolata completamente o comunque non si accorgerebbe di nulla.
Di certo tra tutti mi avete fatto capire e vedere come posso risolvere il mio problema.
Non mi resta che usarne uno e poi con il tempo potrei sempre passare ad un eventuale altro sistema che ritengo migliore o più opportuno al mio caso quando sarò un pò più esperto.
L'icona ricarica è una opzione, però se riesco preferirei fare in modo che la lista sia sempre aggiornata ogni volta che vi si accede.
In un ipotetico uso corretto, per così dire, della app in teoria non ci si dovrebbe accedere più di un paio di volte.
Ma l'utente finale è strano. :D
 
Last edited:

Sagenut

Expert
Licensed User
Longtime User
Per oggi ho terminato il mio tempo a disposizione per giocare con B4A.
Forse riprovo stasera......ma se è come ieri invece mi addormenterò senza fare nulla.
Alla fine scenderò a compromessi.
Chiederò subito tutti i permessi al primo avvio e sempre all'avvio popolerò la lista contatti.
In questo modo risolvo ogni problema di lag o altro.
E per aggiornare prevederò la mitica icona di Refresh.
Del resto non possa mica pretendere chissà cosa alla mia prima esperienza con un'app completa...........e già stò dando per scontato il fatto di completarla.
Mi sento Ottimista.
 

Sagenut

Expert
Licensed User
Longtime User
Ho passato quasi per gioco la mia app ad un amico e da lui i contatti non sono in ordine alfabetico.
Da me invece sì.
Dovrò capire anche questa.

EDIT: leggendo la discussione della ContactUtils penso di avere già la soluzione.
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Stai cercando di compicarti la "vita", come faccio di solito io; ma io sono motivato da... boh, chissà cosa :D:(

Avrai una rubrica pre-installata sullo smartphone, suppongo; la visualizzazione dei contatti è immediata?

Se l'utente dovrà attendere 2 o 3 secondi, secondo me non invecchierà troppo :)
 

Sagenut

Expert
Licensed User
Longtime User
Avrai una rubrica pre-installata sullo smartphone, suppongo; la visualizzazione dei contatti è immediata?
Il S.O. è sempre attivo e la tiene sempre pronta.
Se l'utente dovrà attendere 2 o 3 secondi, secondo me non invecchierà troppo :)
E finché invecchia l'utente a me che me ne frega? :D
Farò qualche prova per vedere cosa mi soddisfa di più.
 

Sagenut

Expert
Licensed User
Longtime User
Oggi al lavoro andiamo molto a singhiozzo.
Vedo se trovo il tempo di leggere meglio qualcosa sul Lazy Loading.
E poi lo vedrò bene nel tuo codice.
 

Sagenut

Expert
Licensed User
Longtime User
Intendi dire che la prima volta che apri la rubrica impiega meno di 1 secondo per visualizzare la lista dei contatti, immagini comprese?
Io non credo.
Nel mio cellulare è istantanea.
Secondo me la scarica all'accensione e poi la tiene sempre lì pronta.
 

Sagenut

Expert
Licensed User
Longtime User
In una app seria e importante potrei permettermi un Servizio che si occupi di tenerla sempre pronta e aggiornata come il S.O.
Ma in questo momento non mi pare il caso.
 

LucaMs

Expert
Licensed User
Longtime User
Nel mio cellulare è istantanea.
Secondo me la scarica all'accensione e poi la tiene sempre lì pronta.
Il che significa anche, secondo me, che conserva una lista degli ID ed ogni volta che apri la rubrica verifica la lunghezza della lista (quindi di quelli già caricati nella "xCLV") con quella effettiva dei contatti. Poi visualizza la lista...

ecco, mi sono fermato perché qualcosa non quadra. Potrebbe pure fare come dici, ma alla fine ciò impiega tempo è la visualizzazione e questa avviene per forza solo quando apri la rubrica.
 

Sagenut

Expert
Licensed User
Longtime User
Nella mia app il panel con la lista verrebbe solo nascosto/mostrato.
Quindi dopo la prima compilazione sarebbe sempre istantaneo se lo popolassi all'avvio.
 

Sagenut

Expert
Licensed User
Longtime User
Per oggi abbandono la mia guerra con la lista contatti.
Però forse c'è qualcosa di non corretto nel codice del Lazy Loading che @LucaMs mi ha gentilmente fornito.
Dico questo perchè provando l'esempio originale di Erel impiega forse 1 secondo per una lista di 1000 oggetti.
E perchè ci deve mettere 3 secondi per la mia di 208?
O forse è davvero la lettura delle immagini dai contatti che è pesante.
Non lo avrei mai detto.
Vediamo se il sonno mi porta consiglio.
Per oggi stacco tutto...............compreso me stesso.
 

LucaMs

Expert
Licensed User
Longtime User
Non ne ho idea; ciò che ho fatto io non è altro che utilizzare il codice di Erel, ovviamente adattandolo.
Potrei aver fatto caxxate? Potrei :p

Ho tutta la notte davanti a me, poi controllo.

E poi c'è un modo "semplice" per averne certezza: usare il mio codice senza prelevare i contatti dalla rubrica ma creare dati fittizi.
 

LucaMs

Expert
Licensed User
Longtime User
Io ieri ho iniziato una cosa "geniale" (leggi: stronzata!): sviluppare server+client "vergini" o quasi. Insomma, una sorta di template.

Cerco di aggiungerci poca roba ma mi sto accorgendo che passo dopo passo ci sto aggiungendo parecchio.

Se vi interessa...!
 
Top