Wieso braucht man in Android Services wenn es doch sowieso immer nur ein Prozess ist. Ich kenne eigentlich Prozesse und Services immer nur als eigene Programme die ausgeführt werden wie z.B. die Klasse Thread das macht. Sie erstellt einen Thread, der neben dem Hauptprogramm läuft. Also wieso werden Services sehr häufig benutzt wenn es doch nur viel Schreibarbeit ist. Ich könnte mir vorstellen wegen der Übersicht, aber das war es auch schon...
Activities (und dessen Threads) darf Android theoretisch jederzeit beenden, wenn es meint das wäre notwendig (auch wenn es die Threads in der Praxis selten killt). Bei Services tut Android das nicht.
Auch einige Services können vom System beendet werden, wenns knapp wird. Aber Services sind Hintergrunddienste, die im Regelfall dauernd laufen, und die bei unfreiwilliger Beendigung meistens automatisch wieder starten.
A. K. schrieb: > Aber Services sind Hintergrunddienste, die im Regelfall dauernd laufen, > und die bei unfreiwilliger Beendigung meistens automatisch wieder > starten. Ja aber eine Service Klasse hängt doch immer von der Acticvity ab die den Service startet. Solange der Service in einer Schleife Dinge durchführt ist auch die Activity gefroren. Er läuft zwar dann weiter hat aber keine Funktion bis er wieder gestartet wird.
A. K. schrieb: > http://techtej.blogspot.de/2011/03/android-thread-... Ok, also ist die Lösung ein Thread im Service zu erstellen. Danke
So hab das jetzt mal geschrieben und will wissen ob das eh so passt oder obs bessere Vorschläge gibt: Das was der Thread machen soll:
1 | package at.example.hello.processes; |
2 | |
3 | import android.util.Log; |
4 | |
5 | public class ServiceArbeiter implements Runnable { |
6 | |
7 | public void run() { |
8 | long zeitVorher = System.currentTimeMillis(); |
9 | while((System.currentTimeMillis() - zeitVorher) < 10000); |
10 | |
11 | for(int i = 0; i < 10; i++) |
12 | Log.d("ServiceArbeiter", "i=:" + i); |
13 | }
|
14 | |
15 | }
|
Und im Service wird er aufgerufen:
1 | package at.example.hello; |
2 | |
3 | import android.app.Service; |
4 | import android.content.Intent; |
5 | import android.os.IBinder; |
6 | import android.util.Log; |
7 | import at.example.hello.processes.ServiceArbeiter; |
8 | |
9 | public class ServiceAc extends Service { |
10 | |
11 | @Override |
12 | public IBinder onBind(Intent intents) { |
13 | // TODO Auto-generated method stub
|
14 | return null; |
15 | }
|
16 | |
17 | @Override |
18 | public void onCreate() { |
19 | Log.d("ServiceApp", "onCreate aufgerufen..."); |
20 | super.onCreate(); |
21 | }
|
22 | |
23 | @Override |
24 | public void onDestroy() { |
25 | Log.d("ServiceApp", "onDestroy aufgerufen..."); |
26 | super.onDestroy(); |
27 | }
|
28 | |
29 | @Override |
30 | public void onStart(Intent intent, int startId) { |
31 | Log.d("ServiceApp", "onStart aufgerufen..."); |
32 | super.onStart(intent, startId); |
33 | |
34 | ServiceArbeiter arbeiter = new ServiceArbeiter(); |
35 | Thread neuerThread = new Thread(arbeiter); |
36 | neuerThread.start(); |
37 | }
|
38 | |
39 | }
|
und funktionieren tuts auch;) Verbesserungsvorschläge?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.