Ho praticamente terminato una app (SONO QUI) che svolge un servizio di geolocalizzazione personale finalizzato principalmente alla sicurezza in montagna. Attualmente è in fase molto avanzata di alpha testing ed è scaricabile da Google Play solo su invito. I tester non mi hanno evidenziato errori o defaillance se non quella riportata qui sotto.
Al link www.lalpinistavirtuale.it/sonoqui qualche particolare in più circa questo servizio e questa app.
C'è solo un punto a cui bisognerebbe rimediare.
L'app dopo un paio d'ore di normale utilizzo diventa un po' "legnosa" ossia stenta a ricevere i comandi (pressione sui vari pulsanti, digitazione di qualche breve testo, scroll di un menu, ecc.); sembra che ad essa sia dedicata una piccola percentuale della CPU o (che è lo stesso) ci sia qualcosaltro che le impedisce di essere pronta e reattiva come lo è non appena avviata (e per almeno un'ora).
Mi rendo conto che è difficile che qualche membro del forum posso darmi qualche aiuto perchè non conosce e non ha sottomano il codice (una decina di Activity e 1 Service). Ci tento ugualmente e fornisco qualche ulteriore dettaglio :
- la "famigerata" istruzione DoEvents non esiste e l'ho sostituita, quando veramente necessario, da un Sleep(0);
- la finestra dei logs evidenzia solamente 8 o 9 "Non tutti i punti chiave del codice restituiscono un valore, warning #2" in corrispondenza di
In realtà non so come rimediare ma non credo che sia importante questo warning.
- nessuna variabile, sub o libreria (17 in totale) non utilizzata;
- ho tentato a risolvere il problema con quello che ho capito della funzione PhoneWakeState: nessun risultato positivo;
- memore di passati linguaggi ho utilizzato anche il "garbage collection" pensando che con il tempo si potesse accumulare della "spazzatura" in memoria: niente di risolutivo;
- poichè la parte del codice che più viene eseguita è la sub GPS_LocationChanged (Location1 As Location) che fa parte di GPSService ho fissato in particolare l'attenzione su questa sub che peraltro contiene solo codice che mi pare assolutamente innocuo;
- ci sono un paio di timer in funzione, uno (A) settato a 1 secondo e l'altro (B) a qualche decina di secondi;
- il Service viene avviato con un pulsante che esegue
e stoppato alla fine dell'esecuzione dell'app; lo stesso per i timer.
Qualcuno può darmi qualche suggerimento, qualche spunto da sviluppare per risolvere il problema ?
Grazie per l'attenzione.
Al link www.lalpinistavirtuale.it/sonoqui qualche particolare in più circa questo servizio e questa app.
C'è solo un punto a cui bisognerebbe rimediare.
L'app dopo un paio d'ore di normale utilizzo diventa un po' "legnosa" ossia stenta a ricevere i comandi (pressione sui vari pulsanti, digitazione di qualche breve testo, scroll di un menu, ecc.); sembra che ad essa sia dedicata una piccola percentuale della CPU o (che è lo stesso) ci sia qualcosaltro che le impedisce di essere pronta e reattiva come lo è non appena avviata (e per almeno un'ora).
Mi rendo conto che è difficile che qualche membro del forum posso darmi qualche aiuto perchè non conosce e non ha sottomano il codice (una decina di Activity e 1 Service). Ci tento ugualmente e fornisco qualche ulteriore dettaglio :
- la "famigerata" istruzione DoEvents non esiste e l'ho sostituita, quando veramente necessario, da un Sleep(0);
- la finestra dei logs evidenzia solamente 8 o 9 "Non tutti i punti chiave del codice restituiscono un valore, warning #2" in corrispondenza di
B4X:
Sub Activity_KeyPress (KeyCode As Int) As Boolean
If KeyCode = KeyCodes.KEYCODE_BACK Then
Activity.Finish
End If
End Sub
- nessuna variabile, sub o libreria (17 in totale) non utilizzata;
- ho tentato a risolvere il problema con quello che ho capito della funzione PhoneWakeState: nessun risultato positivo;
- memore di passati linguaggi ho utilizzato anche il "garbage collection" pensando che con il tempo si potesse accumulare della "spazzatura" in memoria: niente di risolutivo;
- poichè la parte del codice che più viene eseguita è la sub GPS_LocationChanged (Location1 As Location) che fa parte di GPSService ho fissato in particolare l'attenzione su questa sub che peraltro contiene solo codice che mi pare assolutamente innocuo;
- ci sono un paio di timer in funzione, uno (A) settato a 1 secondo e l'altro (B) a qualche decina di secondi;
- il Service viene avviato con un pulsante che esegue
B4X:
If GPSservice.gpsStarted=False Then
StartService(GPSservice)
End If
Qualcuno può darmi qualche suggerimento, qualche spunto da sviluppare per risolvere il problema ?
Grazie per l'attenzione.