Inscription ou de liaison à une Intention de services
J'ai une application qui a une première activité que la liste de certains des fichiers dans une vue de liste. Lorsqu'un élément est cliqué dans la liste qu'il vous faut pour un détail de l'activité de ce fichier spécifique.
Dans la vue de détail, j'ai un bouton de téléchargement, lorsque vous cliquez sur télécharger, il commence une IntentService qui met le fichier à télécharger en tant que tel:
downloadButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(AppDetailsActivity.this, AppDownloadService.class);
intent.putExtra(Consts.APP_DOWNLOAD_RECEIVER_KEY, new DownloadReceiver(new Handler()));
startService(intent);
}
});
la DownloadReceiver classe est utilisée pour mettre à jour une barre de progression dans le le téléchargement du fichier détaillé de l'activité.
Maintenant ce que je veux faire...
Si l'utilisateur est en train de télécharger le fichier à partir du détail de l'activité, puis remonte à l'activité précédente, je veux de l'activité d'une certaine façon s'abonner/se lier à la même IntentService et de récupérer les résultats de sorte qu'il peut afficher une barre de progression à l'intérieur de l'élément de liste du fichier qui est en cours de téléchargement.
- Est-ce possible à l'aide d'un IntentService?
- Est IntentService la bonne chose?
- Sont là des exemples (que je n'ai rien trouvé de ce show me comment le faire)?
OriginalL'auteur FlashAsh99 | 2012-11-12
Vous devez vous connecter pour publier un commentaire.
Pour un téléchargement bien sûr que vous pouvez utiliser un
IntentService
. Il s'exécute sur un autre thread. Aussi, gardez à l'esprit que l'appelstartService()
plusieurs fois pour queIntentService
il va créer une file d'attente et gérer une intention à la fois.Pour montrer le progrès sur un
Activity
je ne pas croire les émissions sont la bonne chose. Bien qu'il est très probable qu'ils sont des processus dans l'ordre, le cadre ou Android elle-même ne garantit pas une commande lors de la livraison. Cela signifie que vous pouvez obtenir de l'émission pour 50% et la diffusion de 40%. Pour cela je vous conseille de prendre un coup d'oeil sur cet exemple: http://developer.android.com/reference/android/app/Service.html#LocalServiceSampleIl peut paraître un peu plus compliqué, mais vous aurez une 2 voies de communication que vous pouvez compter sur.
L'exemple montre une communication entre l'activité et le service. L'activité peut envoyer un message demandant pour le progrès et le service envoie les progrès dans la réponse
Yep, merci, j'ai eu travaille maintenant avec les messages entrants et gestionnaire, et il fonctionne beaucoup mieux maintenant. Merci!
Je suis aussi dans une situation similaire. Puis-je savoir comment vous avez réussi à communiquer au service lorsque l'activité est fermé et relancé?
est droit, cette réponse ne fournit pas assez d'explication de comment faire (si possible) de se lier à l'exécution d'un intentservice après le lancement.
OriginalL'auteur Miguel Ribeiro
J'ai réussi à trouver une solution. Il s'avère que je dois utiliser une émission intention de publier les progrès dans mon service; Et l'utilisation BroadcastReceiver dans mes activités pour récupérer les résultats.
Le lien ci-dessous montre un exemple de l'envoi et la récupération des résultats de services via des émissions.
http://mobile.tutsplus.com/tutorials/android/android-fundamentals-intentservice-basics/
OriginalL'auteur FlashAsh99