Italian Problema lentezza caricamento activity

Gigi59

Member
Licensed User
Longtime User
a me non va in crash se non metto la categoria quando inserisco un movimento ....forse non ho capito :rolleyes:
 

maxware

Well-Known Member
Licensed User
Longtime User
Ciao Gigi
inserisco categoria..ok
vao in movimenti metto importo e descrizione...salva..mi dice compila tutti i campi
ed poi
upload_2015-2-5_8-17-48.png
 

Gigi59

Member
Licensed User
Longtime User
ciao,
dovresti disinstallare o eliminare il db e scaricare quella nuova dal play store che è corretta
mi sa che mi devo dare all'ippica sto invecchiando:(
allora non al''ippica alle bocce:D
 

Gigi59

Member
Licensed User
Longtime User
un consiglio ....
ho messo uno splash alla partenza dell'app ma alcuni pulsanti e la lista sono sempre in primo piano come cavolo faccio a mettere l'immagine davanti a tutto
gia provato con front dal designer ma niente.....

Ciaooo_O
 

Gigi59

Member
Licensed User
Longtime User
Si non è bello ma non riesco a nascondere questa cosa forse con un toast e un immagine.... non so
poi spesso le immagini non vanno in primo piano
 

Gigi59

Member
Licensed User
Longtime User
Ho visto una cosa del genere su un app che presenta i trailer dei films ...
E' tanto brutto ? :confused:
 

udg

Expert
Licensed User
Longtime User
Ciao a tutti.
Ho letto solo ora il thread dall'inizio e, vi chiedo scusa, ma qualcosa non mi è chiaro.
Se caricare all'inizio, una dopo l'altra, le activity produce un miglioramento delle prestazioni, allora sarei portato a pensare che ciascuna di queste (ed in particolare quella con tutte le icone che si vede sul Play Store) preleva dati da un DB o dalla cartella locale e poi questi dati vengono memorizzati in variabili globali (process globals).
Dico questo perchè, escludendo service, moduli e thread in aggiunta a quello del Main, per quanto ne so io una solo Activity è attiva in un dato momento (insieme alle sue var globals) e quindi passare da una all'altra avrebbe l'unico beneficio di eseguire i vari "FirstTime" ma nulla relativo ai layout tranne che per l'ultima richiamata.

Se così è, non sarebbe meglio riunire in un service (o anche una classe apposita, se fosse utile) di inizializzazione tutto quanto deve precedere la prima reale videata e magari mostrare uno splash screen subito prima di questo codice e poi eliminarlo appena fatto?

Qualcosa tipo:
'Main
Main.Create
Show splashscreen
StartService 'qui si può verificare se è la prima volta che viene chiamato..

'Service/Class/Module -- diende da cosa deve fare in realtà
Init variabili varie (process gloabal)
On service.stop call Main.StopSplash

Un'altra cosa da tenere a mente. Se esco dal programma e rientro subito dopo è probabile che FirstTime ritorni False perchè fa riferimento al processo e non all'activity ed è possibile che il garbage collector non abbia ancora distrutto il processo!

Umberto
 

Gigi59

Member
Licensed User
Longtime User
Ciao Umberto,
grazie per i tuoi consigli, hai ragione ovviamente caricare prima tutte le activity non migliora le prestazioni semplicemente mi fa il FirstTime se lo faccio io ho l'impressione che l'app sia lenta. per quanto riguarda il service cosa potrei inizializzare tra
accesso al db
caricamento liste
verifica lingua
caricamento icone
verifica fissi(quei movimenti che si ripetono tutti i mesi)
gestione data
(la grafica è un po pesantina tutto quello che vedi sono immagini :))
da poco tempo mi sono avvicinato ad android e non ho le idee molto chiare:rolleyes:
Grazie
Gigi
 

Gigi59

Member
Licensed User
Longtime User
cosa vuoi dire con nulla relativo ai layout ?
tu non metti il caricamento dei layout nel create?
scusate ma mi sfugge qualcosa (forse più di qualcosa :D)
help me please:)
 

udg

Expert
Licensed User
Longtime User
Ciao Gigi,

inizio dalla fine. Con "nulla relativo ai layout" mi riferivo al vantaggio di eseguire in sequenza tutte le activity_create; quando carichi la seconda (ed il relativo layout), la prima viene chiusa ed il suo layout appena caricato rischia il garbage collector come tutte le altre variabili di quella activity. E così passando alla terza ed oltre.
Quindi non hai un vantaggio ad eseguire in sequenza i vari LoadLayout; mi riferivo a questo.

Tutte le attività descritte nel tuo post #33 mi sembrano ottimi candidati per un (uno o più di uno, dipende da come vuoi strutturare il codice) service di inizializzazione.
Ricorda solo di utilizzare variabili process-global per memorizzare elementi che vuoi inizializzare una tantum e mantenere in vita nel passaggio tra una activity e l'altra.
Ad esempio le icone; potresti avere un array di bitmap dove in fase di init utilizzi loadbitmapsample per caricare le varie icone. Poi nelle varie activity fai riferimento ad icona(x) dove icona() è l'array di cui sopra ed x l'indice dell'immagine che ti serve in quel momento.

Idem per la selezione della lingua o l'init di liste con dati tratti dal DB.

L'unica avvertenza è, come dicevo in precedenza, di non dare per scontato che una seconda esecuzione dell'app comporti necessariamente FirstTime = True; quindi per il codice che chiami in quella sezione dell'activity_create, domandati sempre "cosa succede se non viene eseguito? Mi va bene che le variabili globali mantengano gli ultimi valori acquisiti?".
Facciamo un esempio:
If FirstTime=True then ServiceInit_Start
Ora, se il service si limita a caricare delle variabili globali con dei valori standard (es. le icone dal DirAssets) allora non hai problemi perchè quei valori sono stati già caricati al giro precedente. Ma se serviceinit ti occorre per verificare l'orario ed agire di conseguenza allora ovviamente non ti va più bene.

Mi è venuto in mente ora. Potresti iniziare a raccogliere tutto ciò che va inizializzato una tantum in una sub dell'activity Main e poi richiamarla dal create nella sezione firsttime. questa sub potrebbe aggiungere un panel (lo splashscreen) al layout del main e poi toglierlo appena ha finito.
Avresti quindi:
Main_Create
loadlayout
if firsttime the sub_init
altri_init_non_unatantum

Sub Init
activity.addview(splahpnl,0dip,0dip,activity.width, activity.height) 'copertura totale
init tutto ciò che serve
activity.removeview 'e fai scomparire lo splash

Le altre activity erediteranno quanto già fatto dalla Main grazie alle variabili process_global.
 

Gigi59

Member
Licensed User
Longtime User
Ciao Mamo,
alla fine dopo aver sclerato un pò con servizi e e simili ho fatto come dicevi tu ho usato i pannelli modificato gli sfondi inserendo le immagini dei pulsanti ecc...
adesso direi che è decisamente più leggera e veloce .
Ti sarei sempre grato se quando hai un minuto provassi a scaricare l'ultima versione e dirmi come ti sembra
grazie dei suggerimenti,
Gigi
 

Gigi59

Member
Licensed User
Longtime User
Grazie,
effettivamente era la grafica troppo pesante,
adesso tutti i pulsanti e immagini varie icone ecc. sono disegnanti nello sfondo sopra ho messo un pulsante trasparente.
in questo modo sembra che l'icona sia sul pulsante invece è sotto nello sfondo
gestire 5 pannelli mi ha fatto un po penare con visible tre e false bring to front ma alla fine ho trovato la quadra
era la soluzione migliore
grazie ancora
come faccio a mettere risolto?
 
Top