2013-03-21 14 views
6

Sto lavorando con Android.Avvia il servizio all'avvio ma non l'intera app per Android

Ho un'app su cui sto lavorando utilizza un'attività per impostare valori di input utente specifici che vengono quindi utilizzati da un servizio per fornire avvisi basati su tali valori. Facendo la ricerca ho determinato come posso far avviare l'app all'avvio del telefono, tuttavia, quello che voglio veramente è che il servizio sia avviato ma che l'app non venga caricata sullo schermo. Attualmente l'intera app viene caricata sullo schermo quando accendo il dispositivo e quindi devo uscire da esso.

Ho scaricato programmi simili che dispongono di interfacce per le impostazioni ma che altrimenti vengono eseguite in background. Come è fatto?

+0

Quale sistema operativo? – nunzabar

+0

Mi dispiace per quello. Sto lavorando con Android. Specificamente API 10. – user2196720

+3

Invia un po 'di codice. Hai implementato un BroadcastReceiver (presumo), ma cosa stai facendo esattamente in 'onReceive'? context.startService()? –

risposta

22

In primo luogo è necessario creare un ricevitore:

public class BootCompletedReceiver extends BroadcastReceiver { 

    final static String TAG = "BootCompletedReceiver"; 

    @Override 
    public void onReceive(Context context, Intent arg1) { 
     Log.w(TAG, "starting service..."); 
     context.startService(new Intent(context, YourService.class)); 
    } 
} 

Quindi aggiungere il permesso al vostro AndroidManifest.xml:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

e registrare il ricevitore intento:

<receiver android:name=".BootCompletedReceiver" > 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

Dopo questo è fatto, l'applicazione (classe Application) verrà eseguita insieme ai servizi, ma nessuna attività.

Ah, e non mettere l'applicazione su scheda SD (APP2SD o qualcosa del genere), perché deve risiedere nella memoria principale per essere disponibile subito dopo il boot.

+0

Grazie per la tua risposta. Hai confermato per me che stavo effettivamente facendo la cosa giusta. Il motivo per cui non funzionava era che il servizio richiedeva dati dall'Attività che non era disponibile fino all'avvio dell'attività. Tuttavia, ho escogitato un lavoro in giro. Molto apprezzato! – user2196720

Problemi correlati