J'essaie de créer un service qui effectuera des tâches en arrière-plan pour moi même après que l'utilisateur aura fermé l'application dans le menu des processus en cours (en déplaçant le processus hors de l'écran).
Ce que j'ai essayé de faire est de créer un service dans un processus différent en le déclarant ainsi:
<service
Android:name=".service.Service"
Android:enabled="true"
Android:icon="@drawable/ic_launcher"
Android:process=":my_process" >
</service>
et onStartCommand () est:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
Selon la documentation Android vous pouvez obtenir ce problème en utilisant l'attribut:
Android:isolatedProcess="true"
En passant, je sais que cela ne répond pas à la question, mais cela pourrait également aider certaines personnes. Récemment, j'ai découvert l'existence d'une excellente bibliothèque tierce créée par les développeurs Evernote. Son nom est Android-Job et son objectif est de créer des travaux qui s'exécutent sur différents processus et peuvent redevenir actifs même après le redémarrage d'un périphérique, c'est incroyable.
En réalité, il existe différents types de services que vous pouvez implémenter. Utilisez un service au lieu de IntentService
. Là, vous devez regarder START_STICKY
, START_NOT_STICKY
et START_REDELIVER_INTENT
pour que votre service continue de fonctionner en arrière-plan, même si votre activité décède. Services Android consultez également les services AIDL
Pour cela, vous pouvez utiliser les classes Handler et Runnable
@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();
}
Cette tâche a duré 3min
public void TASK()
{
//your task
}