2013-03-21 9 views
6

Ich arbeite mit Android.Starten Sie den Dienst beim Booten, aber nicht die gesamte Android App

Ich habe eine App, an der ich arbeite, verwendet eine Aktivität, um bestimmte Benutzereingabewerte einzurichten, die dann von einem Dienst verwendet werden, um basierend auf diesen Werten Warnungen bereitzustellen. Bei der Recherche habe ich festgestellt, wie ich die App beim Hochfahren des Telefons starten lassen kann. Ich möchte jedoch, dass der Dienst gestartet wird, die App jedoch nicht auf den Bildschirm geladen wird. Derzeit wird die gesamte App auf den Bildschirm geladen, wenn ich das Gerät einschalte und dann muss ich es beenden.

Ich habe ähnliche Programme heruntergeladen, die Schnittstellen für Einstellungen haben, aber ansonsten im Hintergrund laufen. Wie ist das gemacht?

+0

Welches Betriebssystem? – nunzabar

+0

Entschuldigung. Ich arbeite mit Android. Speziell API 10. – user2196720

+3

Post einige Code. Sie haben einen BroadcastReceiver implementiert (nehme ich an), aber was genau machen Sie im 'onReceive'? context.startService()? –

Antwort

22

Zuerst müssen Sie einen Empfänger erstellen:

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)); 
    } 
} 

Dann fügen Sie die Erlaubnis AndroidManifest.xml:

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

und Absicht Empfänger registrieren:

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

Danach ist fertig ist, wird Ihre Anwendung (Application Klasse) mit Diensten, aber keine Aktivitäten laufen.

Ah, und setzen Sie Ihre Anwendung nicht auf SD-Karte (APP2SD oder etwas ähnliches), weil sie im Hauptspeicher liegen muss, um direkt nach dem Start verfügbar zu sein.

+0

Vielen Dank für Ihre Antwort. Du hast mir bestätigt, dass ich das Richtige tat. Der Grund dafür, dass es nicht funktionierte, war, dass der Dienst Daten von der Aktivität benötigte, die bis zum Start der Aktivität nicht verfügbar waren. Allerdings habe ich mir eine Arbeit ausgedacht. Sehr geschätzt! – user2196720

Verwandte Themen