Italian App con svariate Activity

AlpVir

Well-Known Member
Licensed User
Longtime User
Sto finendo di realizzare una app composta da una dozzina di activity. Per precisa scelta progettuale il passaggio da una activity e l'altra è fatto mediante pulsanti che richiamano appunto un'altra activity. Esempio
B4X:
Sub BotFoto_click
    Activity.Finish
    StartActivity(Foto)
End Sub
L'azione dei pulsanti fisici dello smartphone è quindi inibita, in particolare il tasto "indietro". Questo, ripeto, per precisa scelta mia, viste le caratteristiche dell'app, che non vorrei cambiare.
B4X:
Sub Activity_KeyPress (KeyCode As Int) As Boolean
    If KeyCode = KeyCodes.KEYCODE_BACK Then   
          Return True
    End If 
End Sub

Parecchie activity consistono nella visualizzazione di griglie e tabelle popolate attraverso un database per cui il "create" di queste activity non è molto veloce (faccio tutto o quasi in Activity_create e nulla in Activity_Resume o Activity_Pause le cui funzionalità non mi sono ben chiare.
C'è modo di velocizzzare il tutto ? Ossia di fare in modo che tutto o parte del "lavoro" fatto nella creazione di qualche activity e nel popolamento di certe tabelle sia preservato e non, ogni volta, rifatto da capo ?
Come si può notare ho inserito sempre un Activity.Finish PRIMA di uno StartActivity(...) perchè se non lo facessi mi ritroverei, alla fine della mia app, con qualche videata (e quindi qualche activity) ancora presente: il che non è bello.
Si sarà capito che qualcosa mi è sfuggito di questo linguaggio, specie nella realizzazione di progetti complessi che necessariamente debbono essere affinati. Ad esempio la realizzazione del famoso "alfadesk" di Maxware avrà incontrato problemi simili. Come saranno stati risolti ?
Grazie ancipatamente per l'aiuto che vorrete fornirmi.
P.S.: Ho ovviamente esaminato gli esempi "Two Acvity" e "Three Activity", ma il mio caso mi sembra più complesso.
 

giannimaione

Well-Known Member
Licensed User
Longtime User
ciao AlpVir,
non risulta chiaro una cosa: il database è "statico?" ; voglio dire i dati NON cambiano durante l'uso della APP?
esempio "statico" database ITALIA:
Regioni -> Provincie -> Comuni

Nel tuo caso, mi sembra di capire, che hai una activity con le Regioni e poi facendo click su Lombardia, "apri" una activity
con le diverse Province (Milano, Bergamo, Como, ....) ed ancora click su Bergamo e quindi "Albino,Algua, ecc)

in questo caso potresti leggere e memorizzare (list, listview, table, ecc.) nella activity PRINCIPALE,
magari con un bel messaggio "Attendere prego..." e visulizzarle all occorenza

se invece il DB è "dinamico", quindi viene aggiornato durante l'utilizzo della APP, il tuo approccio/programma è corretto.
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Grazie Gianni
Il mio db è dinamico.
Quindi :
B4X:
Activity.Finish 
StartActivity(...)
tutte le sante volte ?
Se esistesse un Activity.visible = false potrei "parcheggiare" la videata con i suoi bravi dati, in attesa di poterla rivisualizzare in un tempo successivo; con un risparmio di risorse impiegate.
Guardando le app commerciali mi sembra che la "legnosità" della mia app, costruita in quel modo, sia assente.
L'indagine continua .....
 

maxware

Well-Known Member
Licensed User
Longtime User
Ciao AlpVir
Grazie per il " famoso " AlfaDesk . non e' poi cosi' famoso
Comunque la mia scelta non e' stata di chiudere l'activity " padre " prima di eseguire " il figlio"
Semplicemente non esiste un tasto esce nelle activity ( forse solo in alcune activity di tabelle ) ma ho lasciato il tasto indietro attivo
Al momento non ho segnalazioni di rallentamenti da parte degli utenti ne nel caricamento delle form ne nei dati
Mamo
 

djveleno

Active Member
Licensed User
Longtime User
Puoi sempre inglobare le tabelle create in uno o più Panel rendendoli visibili quando servono
 

luke2012

Well-Known Member
Licensed User
Longtime User
Puoi sempre inglobare le tabelle create in uno o più Panel rendendoli visibili quando servono
Si sono daccordo con dj in quanto anche io ho imparato che è sempre meglio limitare al minimo la creazione di nuove activity e puntare molto di più sullo show / hide dei panneli.
 

ivanomonti

Expert
Licensed User
Longtime User
dipende da come gestisci il codice, non credo sarebbe ingestibile
 

djveleno

Active Member
Licensed User
Longtime User
E' ovvio che l'uso dei pannelli è da valutare caso per caso, in quello specifico di mantenere una tabella aperta senza mostrarla mi sembra la soluzione più semplice.
 

adalexander

Member
Licensed User
Longtime User
E' ovvio che l'uso dei pannelli è da valutare caso per caso, in quello specifico di mantenere una tabella aperta senza mostrarla mi sembra la soluzione più semplice.
salve a tutti voi che siete esperti forse potete farmi capire come lavorar con i pannelli, ho letto e seguito diverse guide, ma alla fine o non esce nulla o non capisco io, io ho una pagina con un menù e diversi sotto menù, ovvero sottovoci, circa 12 ogni voce l'aggancio ad una pagina del mo sito, all'inizio lavoravo con le activity, e ci ho preso la mano ma siccome di questi menù ne devo fare due quindi 24 sottovoci avere 24 activity mi sembra alquanto labirintico, come posso fare con i pannelli? finora a chiunque ho chiesto o non mi rispondono o mi mandano ad esempio incomprensibili, scusate ma se sono scarso non è colpa mia, grazie a tutti in anticipo e, scusate per il disturbo.
 

LucaMs

Expert
Licensed User
Longtime User
che siano pannelli o activity, sempre 24 sarebbero.

Piuttosto, l'activity o panel deve visualizzare una pagina del tuo sito? Allora ti basta un pannello!
Lo rendi .visible false, quando l'utente sceglie un menù, carichi la pagina nel pannello e poi rendi il pannello visibile.

Oppure ho capito male :D

(P.S. la scomodità principale di usare vari pannelli nella stessa activity, quando questi sono costruiti nel designer, può essere bypassata settando il valore left del pannello.
Ad esempio, se ho 5 pannelli larghi 480, che è anche la larghezza del display, posso lavorare su ognuno settando il left oltre lo schermo a destra, diciamo a 500. Poi basterà allargare la finestra del designer per vederli.
Oppure, selezionare il pannello dall'elenco e usare BringToFront).
 
Last edited:
Top