Ich versuche, einen Dienst zu erstellen, der Hintergrundjobs für mich ausführt, selbst nachdem der Benutzer die App über das Menü für laufende Prozesse geschlossen hat (indem der Prozess aus dem Bildschirm verschoben wird).
Ich habe versucht, einen Dienst in einem anderen Prozess zu erstellen, indem ich ihn folgendermaßen deklariere:
<service
Android:name=".service.Service"
Android:enabled="true"
Android:icon="@drawable/ic_launcher"
Android:process=":my_process" >
</service>
und onStartCommand () lautet:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
Gemäß der Android-Dokumentation können Sie dieses Verhalten erreichen, indem Sie das Attribut verwenden:
Android:isolatedProcess="true"
Ich weiß übrigens, dass es die Frage nicht beantwortet, aber es könnte auch einigen Leuten helfen - in letzter Zeit habe ich herausgefunden, dass eine großartige Drittanbieter-Lib, die von Evernote-Entwicklern erstellt wurde. Sein Name ist Android-Job und es ist das Ziel, Jobs zu erstellen, die auf verschiedenen Prozessen ablaufen und auch nach einem Neustart des Geräts wieder aktiv werden können. Das ist erstaunlich.
Tatsächlich gibt es verschiedene Arten von Diensten, die Sie implementieren können. Verwenden Sie einen Dienst anstelle von IntentService
. Dort müssen Sie sich START_STICKY
, START_NOT_STICKY
und START_REDELIVER_INTENT
anschauen. Sie können Ihren Dienst auch dann im Hintergrund laufen lassen, wenn Ihre Aktivität stirbt. Android-Dienste Siehe auch AIDL
-Dienste
Hierfür können Sie die Klasse Handler und Runnable verwenden
@Override
public void onCreate()
{
Toast.makeText(context, "SMS SERVICE START", Toast.LENGTH_SHORT).show();
handler=new Handler();
runnable=new Runnable() {
@Override
public void run()
{
TASK();
handler.postDelayed(runnable,180000);
// 3min delay
}
};
handler.postDelayed(runnable,180000);
super.onCreate();
}
Diese Aufgabe läuft kontinuierlich 3min
public void TASK()
{
//your task
}