B
bruegae
Neues Mitglied
- 0
Hallo zusammen,
meine App verwendet einige Activities sowie einen Service. Der Service soll ein solcher sein, der immer läuft und nur bei Speichermangel beendet werden soll.
Wenn ich normal mit dem Home-Button auf den Startbildschirm zurückkehre, kann ich im "TaskManager" meine App noch als laufendes Programm finden. Ebenso unter Einstellungen -> Anwendungen -> laufende Dienste ist mein Service zu finden.
Nach einiger Zeit kicket das Android System mein Programm aus der "Aktive Anwendungen" Liste im Taskmanager. So solls ja sein. Allerdings wird damit gleichzeitig auch mein Service gekillt. Das möchte ich aber nicht! Der soll für immer und ewig laufen, völlig unabhängig von den Activities.
Hier der Code von meinem Service:
So starte ich den Service (aktuell noch manuell durch einen Buttonclick in einer der Activities):
meine App verwendet einige Activities sowie einen Service. Der Service soll ein solcher sein, der immer läuft und nur bei Speichermangel beendet werden soll.
Wenn ich normal mit dem Home-Button auf den Startbildschirm zurückkehre, kann ich im "TaskManager" meine App noch als laufendes Programm finden. Ebenso unter Einstellungen -> Anwendungen -> laufende Dienste ist mein Service zu finden.
Nach einiger Zeit kicket das Android System mein Programm aus der "Aktive Anwendungen" Liste im Taskmanager. So solls ja sein. Allerdings wird damit gleichzeitig auch mein Service gekillt. Das möchte ich aber nicht! Der soll für immer und ewig laufen, völlig unabhängig von den Activities.
Hier der Code von meinem Service:
Code:
public class SilenceService extends Service {
private volatile boolean threadsRunning = false;
private int startId;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
Log.d("ASD", "ss start cmd");
threadsRunning = true;
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
while (threadsRunning) {
preferences.loadFromDB();
try {
work();
// HIER WIRD GEARBEITET
Thread.sleep(preferences.getCheckintervalInSeconds() * 1000);
} catch (InterruptedException e) {
Log.d("ASD", "SERVICE SLEEP EXcEPTION");
}
}
}
});
thread1.start();
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
this.startId = startId;
return START_REDELIVER_INTENT;
}
private void stop() {
Log.d("ASD", "SERVICE stop");
stopSelf(startId);
}
@Override
public void onDestroy() {
threadsRunning = false;
Log.d("ASD", "SERVICE destroy");
super.onDestroy();
}
}
So starte ich den Service (aktuell noch manuell durch einen Buttonclick in einer der Activities):
Code:
startService(new Intent(thisContext, SilenceService.class));