B4A
startForegroundService() not allowed due to mAllowStartForeground false – B4X ForegroundServiceStartNotAllowedException
L'errore indica che l'app sta tentando di avviare un servizio, anche foreground, mentre si trova in background e Android non lo consente. La correzione documentata consiste nell'usare un Receiver per il lavoro breve attivato da un allarme oppure avviare il foreground service mentre l'attività è visibile.
Cosa significa questo errore?
L'errore indica che l'app sta tentando di avviare un servizio, anche foreground, mentre si trova in background e Android non lo consente. La correzione documentata consiste nell'usare un Receiver per il lavoro breve attivato da un allarme oppure avviare il foreground service mentre l'attività è visibile.
Messaggio originale
startForegroundService() not allowed due to mAllowStartForeground falseContesto e parole chiave
Alias
- avvio servizio in background
- mAllowStartForeground false
Messaggi alternativi
- Foreground service start not allowed from background
Prodotti
- B4A
- Receivers
- Services
Piattaforme
- Android 12 e successivi
Parole chiave
- b4a foregroundservicestartnotallowedexception
- b4a receiver android 12
- mAllowStartForeground false
Cause possibili
Avvio del servizio fuori da una finestra consentita
Android limita l'avvio di servizi dal background per ridurre attività invisibili e consumo di risorse. Aggiungere il tipo foreground o il relativo permesso non elimina il vincolo temporale sull'avvio.
molto comuneDiagnosi
Origine della chiamata a StartService o StartForegroundService
Riprodurre il caso dopo aver chiuso o messo in background l'attività e leggere lo stack trace per verificare che l'avvio parta da un alarm, da un servizio o da un altro callback non visibile.
Come leggere il risultato. Se l'attività non è visibile quando parte la chiamata, il rifiuto è la limitazione di background e non un errore di inizializzazione del servizio.
Risoluzione
Spostare il lavoro breve in un Receiver
Per notifiche, allarmi e controlli brevi usare un Receiver, lasciando al foreground service soltanto il lavoro lungo avviato in una situazione consentita.
- Identificare la chiamata che avvia il servizio mentre l'app è in background.
- Usare un Receiver e StartReceiverAt per il lavoro breve dell'allarme.
- Avviare un foreground service solo quando l'attività è visibile o in una finestra permessa da Android.
Domande frequenti
Aggiungere un foregroundServiceType risolve questo errore?
No. Il tipo dichiara il lavoro del servizio, ma Android può comunque vietare l'avvio dal background. Per un alarm breve va usato un Receiver.
Approfondimenti
- Receivers and Services in 2023+ tutorial_b4x_ufficiale
- Error: startForegroundService() not allowed due to mAllowStartForeground false thread_b4x_verificato