Italian Comportamento incomprensibile (Timer / Sender)

Star-Dust

Expert
Licensed User
Longtime User
Non me gusta la versione di @Star-Dust, contiene due Sleep all'interno di un Do While; questo incasina le cose.

Vedi di farti funzionare la mia versione, che è parecchio semplice :mad:😄
È il metodo usato da Erel per B4XLoadingIndicator. É un ottimo metodo. Primo perché funziona in tutti i dispositivi perche rilascia il controllo al sistema per aggiornare la UI. Secondo motivo funziona. Terzo motivo funziona. C'è anche il quarto e quinto motivo.
Per ultimo è semplicissimo
 

LucaMs

Expert
Licensed User
Longtime User
È il metodo usato da Erel per B4XLoadingIndicator. É un ottimo metodo. Primo perché funziona in tutti i dispositivi perche rilascia il controllo al sistema per aggiornare la UI. Secondo motivo funziona. Terzo motivo funziona. C'è anche il quarto e quinto motivo.
Per ultimo è semplicissimo
Pensa che avendo visto quella cosa manco l'ho lanciato 😄 (perché è necessario "seguire il flusso").

Adesso me lo guardo con calma, però.

La creazione dei drawable probabilmente impiega del tempo (ma dovrebbe essere minimo!).
 

zamb

Active Member
Licensed User
Mah, che dire. Eliminando il loop che esclude il fatto che possa essere stimolata la stessa label e dal quale pare non uscire, con e senza sleep vedo le labels ma quella con lo stimolo è sempre e solo l'ultima mentre se lascio il loop x vedere le labels ci vogliono sleep pesanti (che condizionano la visione delle label stesse in termini di dimensioni e posizione) e poi non vedo mai nessuna label con lo stimolo. Mi sembra una situazione un po' troppo ballerina...
 

zamb

Active Member
Licensed User
Il designer era stata la mia prima opzione. Poi però non riuscivo a puntare le label per randomizzarle prima di vedere il tuo metodo della LabelCorrente :)
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Non è che ce stai a pia' per cu...gino de campagna? 😄

E' un progettino semplice semplice e funzionante, una vera stupidaggine!

Hai un altro dispositivo sul quale provarlo?

Maremma hane, lo rifaccio da zero, come se volessi farlo per me stesso! (Se però mi richiede più di mezz'ora di lavoro, butto tutto!).
 

zamb

Active Member
Licensed User
Bisogna ammettere che le motivazioni di Star-Dust sono molto convincenti e poi uno pseudonimo come il suo per uno della mia età risveglia ricordi troppo a lungo sopiti :) :)
 

zamb

Active Member
Licensed User
Posso provare con una carciofola ancora più vecchia ma che mi è sempre parsa più reattiva. Ora ci provo
 

LucaMs

Expert
Licensed User
Longtime User
Bisogna ammettere che le motivazioni di Star-Dust sono molto convincenti
Manco un po'.

Non può inserire un loop infinito (variabile inutile) all'interno della Activity_Create e, all'interno del loop, inserire degli Sleep (o Wait For), perché fanno terminare la Create prima del tempo.

Inotre, se non sbaglio non ha messo una durata variabile del tempo di "attivazione" della label - devo riguardare il sorgente.
 

zamb

Active Member
Licensed User
Niente. Esattamente come sull'altro! Anche a me era parso un progettino da nulla ma poi ho avuto un problema dopo l'altro e ancora non sono certo che siano risolti tutti :mad:
 

LucaMs

Expert
Licensed User
Longtime User
Manco un po'.

Non può inserire un loop infinito (variabile inutile) all'interno della Activity_Create e, all'interno del loop, inserire degli Sleep (o Wait For), perché fanno terminare la Create prima del tempo.

Inotre, se non sbaglio non ha messo una durata variabile del tempo di "attivazione" della label - devo riguardare il sorgente.
Inoltre, non serve testare (valutare) il log; è sufficiente conservare un riferimento alla label "attiva".

Oh, cmq devo dire che ho terminato la pazienza. Dal mio punto di vista il mio progetto funziona. Provalo su un diverso dispositivo. E' molto semplice, non può proprio avere dei bug. Al limite, inserisci dei log, così vedi come procede!
 

zamb

Active Member
Licensed User
La prima tua osservazione è troppo alta per me ma la seconda è vera di certo e pensavo di lavorarci. Sul provare con altro device fatto e nulla cambia :mad: . Sarà il Covid?
Proprio dai log avevo visto che non usciva dal loop. Ora non capisco perchè con degli sleep dopo il cambio di background invece pare di si seppur con altri problemi.
 

zamb

Active Member
Licensed User
Per quanto attiene al loop infinito nella activity_create, almeno nelle ultime due versioni non ne vedo traccia...
 

zamb

Active Member
Licensed User
Ti ringrazio per la spiega utilissima su sleep e wait for ma non so a quale versione di Star-Dust ti riferisca. io non ne vedo. Li vedo solo nelle sub timer_tick e tornabianco. Primi non dovrebbero mai scattare durante la Activity_Create ed il secondo non è mai chiamato nella Activity_Create quindi non capisco..
 

zamb

Active Member
Licensed User
Credo tu stia vedendo una primissima versione. Nelle ultime nulla di tutto ciò..
 

LucaMs

Expert
Licensed User
Longtime User
Credo tu stia vedendo una primissima versione. Nelle ultime nulla di tutto ciò..
A questo punto inizio a pensare che tu ci stia prendendo per i fondelli, quindi questo è il mio ultimo post!

L'ultimo progetto allegato da @Star-Dust è nel post 50:
https://www.b4x.com/android/forum/t...comprensibile-timer-sender.119255/post-745885

Progetto chiamato "Mosca2" nella cartella "Mosca cieca 2" e, all'interno della Activity_Create, c'è il "Do While time":
B4X:
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("Layout1")

    Dim X As Int = 0
    Dim Y As Int = 0
    For i=0 To 8
        Dim L As Label
        ListLab(i)=L ' salva label in array
        L.Initialize("Label")
        L.Color=Colors.Transparent
        L.Tag=""
        'Cornice nera
        Dim C As ColorDrawable
        C.Initialize2(Colors.White,0,1dip,Colors.Black)
        L.Background=C
        'distribusci label nel pannello
        PanelMain.AddView(L,X+20dip,Y+20dip,80dip,80dip)
        X=X+100dip
        If X>200dip Then
            X=0
            Y=Y+100dip
        End If
    Next
   
   
    Do While time
        Dim casella As Int = Rnd(0,9)

        Colora(ListLab(casella))
        Sleep(0)
        If LastLabel.IsInitialized Then TornaBianco(LastLabel)
        LastLabel=ListLab(casella)
        Sleep(duratatimer)
    Loop
End Sub
 
Top