2012-03-26 5 views
8

Können wir mehrere Instanzen eines Dienstes in Android haben? Ich möchte einen Dienst, der das Telefon zu einer bestimmten Zeit stumm schalten kann, und ich möchte diesen Dienst wiederverwenden, um das Telefon zu bestimmten Zeiten in den Vibrationsmodus zu versetzen. Also im Grunde, wenn ich den Dienst mehrmals ausführen kann, ist es nicht notwendig, einen anderen Dienst zu erstellen, um das Telefon in den Vibrationsmodus zu versetzen. Wenn wir mehrere Instanzen ausführen können, erklären Sie bitte, wie Sie sie stoppen können. Jeder Code-Hinweis wird viel helfen.Wie mehrere Instanzen von Service in Android haben

Antwort

25

Können wir mehrere Instanzen eines Dienstes in Android haben?

Nr können Sie mehrere Unterklassen von Service haben, aber jede gegebene Unterklasse von Service wird genau 0 oder 1 Instanzen zu einem bestimmten Zeitpunkt haben.

Ich möchte einen Dienst, der Telefon zu einer bestimmten Zeit still stellen kann und ich möchte diesen Dienst verwenden, um das Telefon im Vibrationsmodus in bestimmter Zeit zu machen.

Sie sollten keinen Service für irgendetwas davon verwenden. Verwenden Sie bitte AlarmManager und eine BroadcastReceiver.

+0

Danke, ich benutze AlarmManager, um den Dienst in einem bestimmten Zeitintervall zu starten. Könnten Sie mir bitte helfen, BroadcastReceiver zu verstehen und wie man es mit AlarmManager benutzt? –

+0

@SumitSahoo: Anstatt 'getService() 'aufzurufen, um' PendingIntent' zu erstellen, rufen Sie' getBroadcast() 'auf. Und statt dass Ihre Geschäftslogik in einem "Service" ist, ist es in einem "BroadcastReceiver" (typischerweise in dem Manifest über ein "" -Element registriert). – CommonsWare

2

Ich glaube nicht, dass der Dienst für einen solchen Zweck verwendet werden kann. Der Dienst muss einige Funktionen bereitstellen, aber nur eine Bedeutung, nicht für verschiedene Zwecke. Es ist besser, dafür zusätzlichen Service zu schaffen, um den Code einfach und klar zu halten.

2

Ihre Frage ergibt keinen Sinn. Es klingt wie das, was Sie tun möchten, mehrere Instanzen des gleichen Dienstes zu haben, die laufen und verschiedene Sachen gleichzeitig tun. Aber Ihre Frage hängt im Grunde davon ab, dass Dienstleistungen nicht lange dauern sollten. Was stattdessen passieren sollte ist, dass sie eine Absicht erhalten, vielleicht einen Faden oder etwas spawnen und dann aufhören, herumzuhängen. Denken Sie daran, dass ein Service immer noch auf dem Hauptthread läuft, er ist nicht im Hintergrund angesiedelt, also sollten Sie dort keine lang laufenden Dinge durchführen. Was Sie sehen wollen, ist ein IntentService, der mit Ihren Aktivitäten durch die Verwendung von Absichten koordiniert, die steuern, was geschehen soll.

Verwandte Themen