Ich habe einen Dienst in Manifest erklärt wieAndroid Service in einem eigenen Thread wird zusammen mit App-Prozess getötet
<service android:name=".services.ScreenOnService" android:process="@string/screenProcess"/>
ganzen Dienst tut, ist für Screen_on Broadcast Registrierung (wie ich immer die Informationen benötigt, dass der Bildschirm gedreht wurde auf und nicht nur, wenn meine Anwendung läuft)
@Nullable
@Override
public IBinder onBind(Intent intent)
{
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
//All this service has to do is register for the screen on broadcast
//as this one can't be registere in manifest and the ACTION_USER_PRESENT is
//not guaranteed to be fired. (E.g. if no lock screen is used)
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
registerReceiver(screenEventReceiver,filter);
return START_STICKY;
}
@Override
public void onDestroy()
{
unregisterReceiver(screenEventReceiver);
super.onDestroy();
}
beginne ich den Dienst von meiner Anwendung onCreate
@Override
public void onCreate() {
super.onCreate();
if(!isScreenOnServiceAlreadyRunning())
{
//Start the screen on service
Intent screenOnService = new Intent(this, ScreenOnService.class);
startService(screenOnService);
}
}
Alles ist in Ordnung, solange die App läuft. Wenn ich die App töte, wird der Dienst in seinem eigenen Prozess ebenfalls getötet und ich verstehe nicht warum.
Ich fand einen vielversprechenden Artikel hier http://fabcirablog.weebly.com/blog/creating-a-never-ending-background-service-in-android und hoffte das Beste, aber selbst wenn ich das mache und eine Sendung sende, wird es nicht funktionieren.
Warum funktioniert der Dienst nicht mehr, wenn die App beendet wird? Ich nahm an, dass es weiterläuft, da es in seinem eigenen Prozess ist. Wenn das, was ich will, mit meinem Ansatz nicht realisierbar ist, was ist der beste Weg, dies zu tun?
Danke schon.
„Wenn ich die app töten“ - bitte erklären ** ** genau, was du bist tun, um "die App zu töten". – CommonsWare
Ich "töte" es auf dem Gerät von Android Task Manager. Ich drücke die Schaltfläche Prozesse und wische die App vom Bildschirm. –
"Ich drücke die Prozesse-Schaltfläche" - es gibt keine "Prozesse Schaltfläche" in "Androids Task Manager" im Standard-Android. Sie verwenden etwas, das für Ihr Gerät spezifisch ist. Bei einigen Geräten entspricht diese Art von fortgeschrittenem Aufgabenmanager dem Befehl, Force Stop auf dem Bildschirm Ihrer App in den Einstellungen zu drücken. In diesem Fall ist mit Ihrem Verhalten zu rechnen. Dies ist eine unglückliche Entscheidung seitens der Gerätehersteller, und wir können nichts dagegen tun. – CommonsWare