Android: Wozu Services?

Gast #2836881
Lesenswert?

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...
Gast #2838969
Lesenswert?

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.
Gast #2839230
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren