Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Differences between Intent and PendingIntent

I read through some articles. All seem to do the same thing and I was wondering what is the difference between starting the service as below:

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

or below:

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);  

As I read through, these two do the same thing, if in the service you return a parameter START_STICKY;

like image 562
user3629316 Avatar asked Jun 17 '14 06:06

user3629316


People also ask

What is difference between intent and PendingIntent?

In conclusion, the general and main difference between Intent and PendingIntent is that by using the first, you want to start / launch / execute something NOW, while by using the second entity you want to execute that something in the future.

What is a PendingIntent?

A PendingIntent itself is simply a reference to a token maintained by the system describing the original data used to retrieve it. This means that, even if its owning application's process is killed, the PendingIntent itself will remain usable from other processes that have been given it.

What is intent PendingIntent and sticky intent in android?

Sticky Intent : sticky intents are associated with the android system for the future broadcast events. Pending Intent : Those intent which you want to trigger at some time in future when you application is not alive.

What is difference between intent and intent filter in android?

An intent is an object that can hold the os or other app activity and its data in uri form.It is started using startActivity(intent-obj).. \n whereas IntentFilter can fetch activity information on os or other app activities.

What is the difference between pending intent and normal intent?

The main differences between a pendingIntent and regular intent is pendingIntent will perform at a later time where Normal/Regular intent starts immediately. There are many action that can be done with pendingIntent like sending email, attaching a photo to an email even start a activity, services or send Broadcast like a regular intent.

What is a pendingintent?

A PendingIntent is to Activity, Broadcast or Service. Why use PendingIntent? Intent myIntent = new Intent (BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivity (myIntent);

What is pending intent in Salesforce?

The moral of the story is this, PendingIntent is an intent that will perform at a later time or in other words PendingIntent specifies an action to take in future. The main differences between a pendingIntent and regular intent is pendingIntent will perform at a later time where Normal/Regular intent starts immediately.

What is a pending intent in Android?

A PendingIntent specifies an action to take in the future. It lets you pass a future Intent to another application and allow that application to execute that Intent as if it had the same permissions as your application, whether or not your application is still around when the Intent is eventually invoked.


2 Answers

Intent

An Android Intent is an object carrying an intent, i.e. a message from one component to another component either inside or outside of the application. Intents can communicate messages among any of the three core components of an application -- Activities, Services, and BroadcastReceivers.

The intent itself, an Intent object, is a passive data structure. It holds an abstract description of an operation to be performed.

For example: say you have an Activity that needs to launch an email client and send an email. To do this, your Activity would send an Intent with the action ACTION_SEND, along with the appropriate chooser, to the Android Intent Resolver:

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

The specified chooser gives the proper interface for the user to pick how to send your email data.

EXPLICIT INTENTS

// 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); 

IMPLICIT INTENTS

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

Pending Intent

A PendingIntent is a token that you give to a foreign application (e.g. NotificationManager, AlarmManager, Home Screen AppWidgetManager, or other 3rd party applications), which allows the foreign application to use your application's permissions to execute a predefined piece of code.

By giving a PendingIntent to another application, you are granting it the right to perform the operation you have specified as if the other application was yourself (with the same permissions and identity). As such, you should be careful about how you build the PendingIntent: almost always, for example, the base Intent you supply should have the component name explicitly set to one of your own components, to ensure it is ultimately sent there and nowhere else.

Example for Pending Intent : http://android-pending-intent.blogspot.in/

Source : Android Intents and Android Pending Intents

Hope this helps.

like image 152
Siddharth_Vyas Avatar answered Nov 07 '22 23:11

Siddharth_Vyas


PendingIntent is a wrapper of Intent. The foreign app that receives the PendingIntent, doesn't know the content of Intent which is wrapped by PendingIntent. The mission of foreign app is to send back the intent to owner when some conditions are met (For example: alarm with schedule, or notification with click...). The conditions are given by owner but processed by foreign app (For example: alarm, notification).

If foreign app sent intent to your app, mean that foreign app know about the content of the intent. and foreign app make decision to send intent then your app must process intent to meet some conditions => your app get performance resource of system.

like image 39
HungNM2 Avatar answered Nov 08 '22 00:11

HungNM2