Italian Restart App "senza" animazione, possibile?

XorAndOr

Active Member
Licensed User
Longtime User
Ciao ragazzi
Non so se è normale, ma ad un certo punto,dovrei riavviare l'app
solo che mi fa uno strano effetto di animazione un po fastidiosa.
All'avvio dell'app mi sta pure bene,
ma se provo a riavviarla all'interno app, ho l'animazione che vorrei evitare.
Ho messo Animazione a 0 nel designer
e B4XPages.GetManager.TransitionAnimationDuration = 0
ma stesso problema.
C'è un modo?
Se serve allego esempio B4APages
allego il codice che sto tentando di provare

Main
B4X:
Sub Process_Globals
    Public ActionBarHomeClicked As Boolean
End Sub

Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
    Dim pm As B4XPagesManager
    pm.Initialize(Activity)
End Sub

'Restart app
Public Sub RestartActivity
    Activity.Finish
    StartActivity(Me)
End Sub

B4XMainPage
B4X:
Sub Class_Globals
    Private Root As B4XView
    Private xui As XUI
End Sub

Public Sub Initialize
'    B4XPages.GetManager.LogEvents = True
    B4XPages.GetManager.TransitionAnimationDuration = 0
End Sub

'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1
    Root.LoadLayout("MainPage")
End Sub

Private Sub Button1_Click
    CallSub(Main,"RestartActivity")'---- > Restart app. Main
End Sub

Grazie
 

LucaMs

Expert
Licensed User
Longtime User
Non proprio l'activity, anche solo la B4XMainPage, dove ho del codice che dovrebbe essere riavviato,
Già se ricarichi solo la B4XMainPage la cosa è diversa e probabilmente più gestibile (per quanto riguarda quel "difetto" grafico, intendo dire).

Ma se hai del codice da riavviare, scrivilo in una Sub, nella B4XMainPage stessa o altrove (una classe, ad esempio) e richiama solo quella.
 

Sagenut

Expert
Licensed User
Longtime User
Forse una soluzione potrebbe essere utilizzare una parte di questa libreria
AppUpdate
Questa libreria serve per poter aggiornare una app installata manualmente fuori dal market google scaricando il nuovo APK da un proprio spazio web.
E alla fine esegue anche il riavvio, tramite un servizio che chiude l'app e la rilancia.
Puoi guardare il codice e prendere spunto.
 

XorAndOr

Active Member
Licensed User
Longtime User
Puoi guardare il codice e prendere spunto.
Grazie mille del link @Sagenut , vedo cosa posso fare.
Vorrei spiegare perchè ho la necessità di riavviare l'app:
La mia app comunica con un hardware in Bluetooth. All'avvio app funziona tutto regolare quando è connessa per la prima volta
poi mentre sto all'interno dell'app mi disconnetto per fare altre operazioni, al successivo reconnect mi ritrovo
i dati presenti nel buffer ripetute 2 volte, questo comporta errori, le ho provate di tutte a svuotare il buffer, ma nulla
l'unico modo è il riavvio, o uscire dall'app. Stavo provando a far in modo di rimanere nel Menu dell'app.
Ho iniziato questo progetto in B4XPage dove riscontro questa necessità di riavviare. Ma ho fatto una prova
nel copiare il progetto nel "vecchio" modo con le Activity e chiudendo solo l'activity riferita al buffer con Activity.Finish
tutto funziona benissimo. Mentre con le B4XPages.ClosePage non và, il buffer mi da errore dati.
 

LucaMs

Expert
Licensed User
Longtime User
on le Activity e chiudendo solo l'activity riferita al buffer con Activity.Finish
tutto funziona benissimo. Mentre con le B4XPages.ClosePage non và, il buffer mi da errore dati.
Questo perché la ClosePage non elimina la pagina, per cui, quando la riapri, non viene eseguita la routine-evento B4XPage_Created, nella quale evidentemente fai qualcosa che ti aspetti che svuoti il buffer.

Cmq, il problema grafico è secondario, nel senso che la "animazione fastidiosa" è dovuta alla ricreazione dell'Activity Main, mentre ciò che dovresti risolvere sono i problemi di connessione.
 

udg

Expert
Licensed User
Longtime User
Se ho compreso bene, il problema è circoscritto al BT che mantiene attivo un buffer che vorresti azzerare "a comando".
Potresti seguire l'indicazione di @LucaMs ed ingoblare inizializzazione e"connect" del device BT in una Sub da richiamare sia in fase di MainPage_Create sia quando ti occorre azzerare (dopo aver effettuato una disconnessione del BT..per pulizia di logica operativa).
Direi che l'unica vera variante rispetto a coò che hai già provato sia l'inizializzazione del BT prima del Connect.
 

XorAndOr

Active Member
Licensed User
Longtime User
Buongiorno ragazzi
grazie @LucaMs e @udg delle info molto utili.
Qualche tempo fa i miei progetti li facevo con le Activity e mai avuto problemi
poi sono uscite le B4XPage e all'inizio non mi è stato facile capire come andava strutturato il progetto.
Oggi sono con le B4XPage e ho tutti sti casini.
Se non trovo soluzione torno alle vecchie e care Activity.
 
Top