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.