Storicamente, è un esempio di ReceiverRestrictedContext
, ma questa classe è andato nelle recenti versioni di Android (non quale livello di API esattamente, ma non è presente in API 26 fonti), così ora, è dovrebbe essere il tuo contesto applicativo.
ReceiverRestrictedContext
impedito di registrare un BroadcastReceiver
da un BroadcastReceiver
.
Poiché un'istanza di ReceiverRestrictedContext
viene creato ogni volta che il BroadcastReceiver
viene creata un'istanza, è necessario stare attenti di non passare a un componente che ha un ciclo di vita più lungo di quanto il tuo (molto breve durata) BroadcastReceiver
, o si potrebbe creare perdite di memoria su questi versioni precedenti (non così tanto) di Android che hanno questo ReceiverRestrictedContext
.
Si può tranquillamente chiamare getApplicationContext()
e passare il suo risultato a un componente più longevo però.
Si noti che il fatto ReceiverRestrictedContext
non è più disponibile nelle versioni Android recenti, non significa che è possibile creare un "BroadcastReceiverCeption"!
fonte
2017-11-23 09:37:01
Può essere un contesto applicazione, ma è una versione limitata di tale contesto. Nel codice sorgente Android per 'Contesto' si parla di' ReceiverRestrictedContext' e questo Contesto non consente certe operazioni come 'registerReceiver()' e 'bindService()'. Se hai davvero bisogno di un contesto applicativo in 'onReceive()', allora devi chiamare 'context.getApplicationContext()' –
@ coder_For_Life22 Contesto di quale applicazione? L'applicazione che riceve la trasmissione o l'applicazione che invia la trasmissione? – Bhargav