Autore Topic: Consigliatemi come utilizzare in questa situazione il broadcast receiver  (Letto 1406 volte)

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Ciao a tutti,
ho un dubbio su come implementare questa funzionalità, vi spiego:

Vorrei avere un app dove l'utente imposta dei parametri e li salva da qualche parte.
Poi vorrei che queste impostazioni le rilevasse un Broadcast Receiver che le utilizza per vari comportamenti.
Io ho inserito in questa App la chiamata al Broadcast Receiver, ma ora mi viene un dubbio.
Supponiamo che l'utente si scarica ed installa la mia app , configura i parametri, parte il Broadcast Receiver e tutto va bene.
Ora l'utente spegne il telefonino, l'ho riaccende, ma il mio broadcast receiver riparte ? oppure deve riaprire l'app di configurazione per farlo partire ?
Quando l'utente installa la mia app, installa sia l'app che il Broadcast Receiver ?
Grazie
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Consigliatemi come utilizzare in questa situazione il broadcast receiver
« Risposta #1 il: 31 Maggio 2012, 11:11:56 CEST »
0
Considera che il BroadcastReceiver ha un ciclo di vita che coincide col suo metodo onReceive. Lo svegli con un sendBroadcast() (o con un messaggio broadcastato dal sistema), lui intercetta l'intent nella onReceive, fa le sue elaborazioni e muore.
Per questo non mi sono chiari i tuoi dubbi:

Citazione
Ora l'utente spegne il telefonino, l'ho riaccende, ma il mio broadcast receiver riparte ? oppure deve riaprire l'app di configurazione per farlo partire ?
Quando l'utente installa la mia app, installa sia l'app che il Broadcast Receiver ?

che in genere sono dubbi riferiti ai Service.

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Consigliatemi come utilizzare in questa situazione il broadcast receiver
« Risposta #2 il: 31 Maggio 2012, 11:16:43 CEST »
0
Concordo con te.
E' vero che poi muore, ma poi verrà risvegliato per un nuovo evento del telefono.
Ma se il telefono viene spento il mio Broadcast Receiver che lo sveglia ?
Potrei creare una altro broadcast receiver al boot ?
Spero di aver espresso correttamente il mio dubbio.
Grazie


Creo un servizio nella mia app che ogni volta risveglia il mio broadcast services ?
« Ultima modifica: 31 Maggio 2012, 11:18:36 CEST da Luigi.Arena, Reason: Oppure: »
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Consigliatemi come utilizzare in questa situazione il broadcast receiver
« Risposta #3 il: 31 Maggio 2012, 11:20:16 CEST »
0
Citazione
Ma se il telefono viene spento il mio Broadcast Receiver che lo sveglia ? Potrei creare una altro broadcast receiver al boot ?
E questo altro broadcast chi lo sveglia? Alla ricerca del primo broadcast non broadcastato  (Aristotele docet :D)

Scherzi a parte, un Broadcast viene "svegliato" sempre e comunque da un Intent per cui è registrato: non gli serve altro.

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Consigliatemi come utilizzare in questa situazione il broadcast receiver
« Risposta #4 il: 31 Maggio 2012, 11:25:52 CEST »
0
E questo altro broadcast chi lo sveglia? Alla ricerca del primo broadcast non broadcastato  (Aristotele docet :D)
Bella  :-P

Perciò tu dici che la prima volta che l'utente configura l'app ed io nell'oncreate faccio partire il Broadcast, poi mi rimane sempre attivo ?
Perciò se il mio broadcast intercetta lo scatto di una foto, questò lo farà sempre ?anche se riavvio il telefonino ?
Grazie
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Consigliatemi come utilizzare in questa situazione il broadcast receiver
« Risposta #5 il: 31 Maggio 2012, 11:30:50 CEST »
+1
Citazione
Perciò tu dici che la prima volta che l'utente configura l'app ed io nell'oncreate faccio partire il Broadcast, poi mi rimane sempre attivo ?
Il punto è che un broadcast non è MAI attivo, se non durante l'esecuzione del suo onReceive.

Citazione
Perciò se il mio broadcast intercetta lo scatto di una foto, questò lo farà sempre ?anche se riavvio il telefonino ?
Attenzione: lo farà fintanto che rimane registrato per una particolare action. Dunque se la registrazione è a livello manifest, il broadcast sarà sempre risvegliabile dall'intent giusto; se invece la registrazione è programmatica, il broadcast si risveglierà se c'è l'intent giusto e se è stato registrato. Ovviamente la registrazione programmatica dura il tempo che dura: se riavvii il cellulare il broadcast non è registrato, dunque non risvegliabile. Ma in genere la registrazione programmatica si usa quando è un'Activity ad utilizzare un broadcast receiver (lo registri sull'onResume e lo cancelli sull'onPause).

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Consigliatemi come utilizzare in questa situazione il broadcast receiver
« Risposta #6 il: 31 Maggio 2012, 11:37:09 CEST »
0

Il punto è che un broadcast non è MAI attivo, se non durante l'esecuzione del suo onReceive.
Intendevo in ascolto, pronto all'azione  :-)

Grazie.
Mi hai chiarito alcuni dubbi.
Si in effetti la registrazione la faccio nel manifest.
Ora comunque passo al pratica e faccio delle prove.
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Consigliatemi come utilizzare in questa situazione il broadcast receiver
« Risposta #7 il: 31 Maggio 2012, 11:52:37 CEST »
0
Ringrazio  DarnellNajanReed per le spiegazioni utili.
Volevo postare una porzione di un manuale che sto leggendo in cui specifica questo:

Citazione
Registering Broadcast Receivers in Your Application Manifest
To include a Broadcast Receiver in the application manifest, add a receiver tag within the application
node specifying the class name of the Broadcast Receiver to register. The receiver node needs to
include an intent-filter tag that specifi es the action string being listened for, as shown in the XML
snippet below:
<receiver android:name=”.LifeformDetectedBroadcastReceiver”>
<intent-filter>
<action android:name=”com.paad.action.NEW_LIFEFORM”/>
</intent-filter>
</receiver>
Broadcast Receivers registered this way are always active.

Citazione
Registering Broadcast Receivers in Code
You can control the registration of Broadcast Receivers in code. This is typically done when the receiver
is being used to update UI elements in an Activity. In this case, it’s good practice to unregister Broadcast
Receivers when the Activity isn’t visible (or active).

The following code snippet shows how to register a Broadcast Receiver using an IntentFilter:
// Create and register the broadcast receiver.
IntentFilter filter = new IntentFilter(NEW_LIFEFORM_DETECTED);
LifeformDetectedBroadcastReceiver r = new LifeformDetectedBroadcastReceiver();
registerReceiver(r, filter);
To unregister a Broadcast Receiver, use the unregisterReceiver method on your application context,
passing in a Broadcast Receiver instance, as shown below:
unregisterReceiver(r);

Spero possa tornare utile.
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .