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.