Différences entre l’intention et l’attente

J’ai lu quelques articles et les deux semblent faire la même chose et je me demandais quelle est la différence entre démarrer le service comme ça:

Intent intent = new Intent(this, HelloService.class); startService(intent); 

ou comme ça:

 Calendar cal = Calendar.getInstance(); Intent intent = new Intent(this, MyService.class); PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0); AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 30*1000, pintent); 

Au fur et à mesure de ma lecture, ces deux éléments font la même chose si, dans le service, vous retournez un paramètre START_STICKY;

Intention

Une intention Android est un object portant une intention, c’est-à-dire un message d’un composant vers un autre composant, à l’intérieur ou à l’extérieur de l’application. Les intentions peuvent communiquer des messages entre l’un des trois composants principaux d’une application – Activités, Services et BroadcastReceivers.

L’intention elle-même, un object d’intention, est une structure de données passive. Il contient une description abstraite d’une opération à effectuer.

Par exemple: dites que vous avez une activité qui doit lancer un client de messagerie et envoyer un courrier électronique. Pour ce faire, votre activité enverrait une intention avec l’action ACTION_SEND , avec le sélecteur approprié, au résolveur d’intention Android:

 Intent intent = new Intent(Intent.ACTION_SENDTO); intent.setData(Uri.parse("mailto:")); // only email apps should handle this 

Le sélecteur spécifié fournit l’interface appropriée pour que l’utilisateur choisisse comment envoyer vos données de courrier électronique.

INTRODUCTION EXPLICITE

 // Explicit Intent by specifying its class name Intent i = new Intent(this, TargetActivity.class); i.putExtra("Key1", "ABC"); i.putExtra("Key2", "123"); // Starts TargetActivity startActivity(i); 

INTRODUCTION IMPLICITE

 // Implicit Intent by specifying a URI Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com")); // Starts Implicit Activity startActivity(i); 

Intention en attente

Un PendingIntent est un jeton que vous donnez à une application étrangère (par exemple, NotificationManager, AlarmManager, Home Screen AppWidgetManager ou d’autres applications tierces), qui permet à l’application étrangère d’utiliser les permissions de votre application pour exécuter un morceau de code prédéfini.

En atsortingbuant un PendingIntent à une autre application, vous lui accordez le droit d’effectuer l’opération que vous avez spécifiée comme si l’autre application était vous-même (avec les mêmes permissions et identités). En tant que tel, vous devez faire attention à la manière dont vous construisez le PendingIntent: presque toujours, par exemple, l’intention de base que vous fournissez doit avoir le nom du composant explicitement défini sur l’un de vos propres composants.

Exemple d’intention en attente: http://android-pending-intent.blogspot.in/

Source: Intents Android et Intentions d’ Android en attente

J’espère que cela t’aides.

PendingIntent est une enveloppe d’ Intent . L’application étrangère qui reçoit le PendingIntent ne connaît pas le contenu de Intent qui est PendingIntent par PendingIntent . La mission de l’application étrangère est de renvoyer l’intention au propriétaire lorsque certaines conditions sont remplies (par exemple: alarme avec planification ou notification par clic …). Les conditions sont données par le propriétaire mais traitées par une application étrangère (par exemple: alarme, notification).

Si une application étrangère envoie une intention à votre application, cela signifie que l’application étrangère connaît le contenu de l’intention. et l’application étrangère prend la décision d’envoyer l’intention, alors votre application doit traiter l’intention de répondre à certaines conditions => votre application obtient des ressources de performance du système.