Question

i ont une activité ( "ApplicationActivity") qui appellent un service intention ( "DownloadService")

Les fichiers de téléchargement intentService à partir d'Internet en arrière-plan, mais je veux être en mesure d'interrompre un téléchargement spécifique .........

Alors disons que je mets 5 fichiers dans la file d'attente: fichier 1,2,3,4,5

Le service intention commencer à télécharger le numéro 1, puis la deuxième et ainsi de suite .... 1) Est-il possible de dire au service intention abort ce que vous faites au moment de l'événement poignée de la méthode (dans ce fichier de téléchargement de 1 cas) et commencer à télécharger le suivant?

2) Est-il possible de retirer l'élément de la file d'attente, de sorte que par exemple le téléchargement de fichier est alors 1, supprimer le fichier 4 à partir de la file d'attente de telle sorte que, après le numéro 3, on va directement à la 5?

Peu de temps, je besoin d'un moyen pour communiquer avec la file d'attente pour effectuer ces 2 opérations simples, mais je ne trouve rien sur Internet UTILE: (

Tnx

Était-ce utile?

La solution 2

Je crée ma propre classe MyIntentService copie de l'original qui est assez court et modifier les méthodes pour mon propre but ........ en particulier DEQUEUE un élément que vous pouvez utiliser des méthodes de ServiceHandler dans mon cas
mServiceHandler.removeMessages (appId);
que Supprimez tous les messages en attente de messages avec un certain code « quoi » qui sont dans la file d'attente de messages, cela signifie que vous devez étiqueter chaque message que vous ajoutez dans la file d'attente l'ajout d'un identifiant dans le champ « quoi » de chaque message ... ..pour exemple

public void onStart(Intent intent, int startId) 
{
    super.onStart(intent, startId);
    Message msg = mServiceHandler.obtainMessage();
    msg.arg1 = startId;
    msg.obj = intent;
    msg.what = intent.getIntExtra("appId", 0); \\parameters that come from the outside

Autres conseils

Comme l'a dit @JeffreyBlattman ci-dessus, il est préférable de jouer en toute sécurité en affectant votre propre « ce que » la valeur du message comme celui-ci

@Override
    public void onStart(@Nullable Intent intent, int startId) {
        Message msg = mServiceHandler.obtainMessage();
        msg.arg1 = startId;
        msg.obj = intent;
        msg.what = 0;
        mServiceHandler.sendMessage(msg);
    }

et effacer la file d'attente comme mServiceHandler.removeMessages(0).

L'espoir qui aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top