刚才一个例子中用到了PendingIntent,与之前学过的Intent有些类似,所以百度了一下结合自己的理解做个整理:
Intent是一个意图,一个描述了想要启动一个Activity、Broadcast或是Service的意图。它主要持有的信息是它想要启动的组件(Activity、Broadcast或是Service)。
PendingIntent可以看作是对Intent的包装。供当前App之外的其他App调用。有点“被动”或是“Callback”的意思,但不是严格意义上的“被动”或是“Callback”。总之,当前App不能用它马上启动它所包裹的Intent。而是在外部App执行这个PendingIntent时,间接地、实际地调用里面的Intent。PendingIntent主要持有的信息是它所包装的Intent和当前App的Context。正由于PendingIntent中保存有当前App的Context,使它赋予外部App一种能力,使得外部App可以如同当前App一样的执行PendingIntent里的Intent,就算在执行时当前App已经不存在了,也能通过存在PendingIntent里的Context照样执行Intent。
intent英文意思是意图,pending表示即将发生或来临的事情。
PendingIntent这个类用于处理即将发生的事情。比如在通知Notification中用于跳转页面,但不是马上跳转。
Intent 是及时启动,intent 随所在的activity 消失而消失。
PendingIntent 可以看作是对intent的包装,通常通过getActivity,getBroadcast ,getService来得到pendingintent的实例,当前activity并不能马上启动它所包含的intent,而是在外部执行 pendingintent时,调用intent的。正由于pendingintent中 保存有当前App的Context,使它赋予外部App一种能力,使得外部App可以如同当前App一样的执行pendingintent里的 Intent, 就算在执行时当前App已经不存在了,也能通过存在pendingintent里的Context照样执行Intent。另外还可以处理intent执行 后的操作。常和alermanger 和notificationmanager一起使用。
Intent一般是用作Activity、Sercvice、BroadcastReceiver之间传递数据,而Pendingintent,一般用在 Notification上,可以理解为延迟执行的intent,PendingIntent是对Intent一个包装。
java代码:
- private void showNotify(){
- Notification notice=new Notification();
- notice.icon=R.drawable.icon;
- notice.tickerText=”您有一条新的信息”;
- notice.defaults=Notification.DEFAULT_SOUND;
- notice.when=10L;
- // 100 毫秒延迟后,震动 250 毫秒,暂停 100 毫秒后,再震动 500 毫秒
- //notice.vibrate = new long[] { 100, 250, 100, 500 };出错?
- //notice.setLatestEventInfo(this, “通知”, “开会啦”, PendingIntent.getActivity(this, 0, null, 0));
- notice.setLatestEventInfo(this, “通知”, “开会啦”, PendingIntent.getActivity(this, 0, new Intent(this,Activity2.class), 0));//即将跳转页面,还没跳转
- NotificationManager manager=(NotificationManager)getSystemService(this.NOTIFICATION_SERVICE);
- manager.notify(0,notice);
- }
复制代码
1. GSM网络中android发送短信示例
java代码:
- String msg =”你好,美女”;
- String number = “135****6784″;
- SmsManager sms = SmsManager.getDefault();
- PendingIntent pi = PendingIntent.getBroadcast(SmsActivity.this,0,new Intent(…),0);
- sms.sendTextMessage(number, null, msg, pi, null);
- Toast.makeText(SmsActivity.this,”发送成功”,Toast.LENGHT_LONG).show();
复制代码
PendingIntent就是一个Intent的描述,我们可以把这个描述交给别的程序,别的程序根据这个描述在后面的别的时间做你安排做的事情 (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,就相当于PendingIntent代表了Intent)。本例中别的程序就是发送短信的程序,短信发送成功后要把intent广播出 去 。
函数SmsManager.sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)中参数解释:
1)PendingIntent sentIntent:当短信发出时,成功的话sendIntent会把其内部的描述的intent广播出去,否则产生错误代码并通过 android.app.PendingIntent.OnFinished进行回调,这个参数最好不为空,否则会存在资源浪费的潜在问题;
2)PendingIntent deliveryIntent:是当消息已经传递给收信人后所进行的PendingIntent广播。
查看PendingIntent 类可以看到许多的Send函数,就是PendingIntent在进行被赋予的相关的操作。
分享到:
相关推荐
当创建PendingIntent时,会根据提供的Intent和Flag来决定哪些应用可以触发这个Intent,以及如何触发。这种设计使得我们可以放心地将PendingIntent传递给第三方应用,如通知系统或闹钟服务。 PendingIntent的创建...
`PendingIntent`是Android中的一个关键类,它代表一个意图(Intent)的动作,可以在未来的某个时刻由系统或者其他应用触发。`PendingIntent`主要用于跨进程通信,例如在通知(Notification)中使用,当用户点击通知...
在Android开发中,Intent和PendingIntent是两个非常重要的概念,它们在组件间的通信中起到关键作用。Intent可以理解为一种消息传递对象,用于在不同组件之间传递行为和数据,而PendingIntent则是Intent的一种封装,...
在Android开发中,Intent和PendingIntent是两个非常关键的概念,它们在应用程序的组件间通信中起着重要作用。Intent主要用于启动或传递数据给另一个组件,如Activity、Service或BroadcastReceiver,而PendingIntent...
1. **创建PendingIntent**: 应用通过Intent和Flags参数创建PendingIntent实例。 2. **传递给外部组件**: 将PendingIntent传递给其他应用或系统服务,如NotificationManager。 3. **外部组件请求执行**: 当外部组件...
要用 android.app.PendingIntent.getBroadcast(Context context, int requestCode, Intent intent)来实现控制多个闹钟,关键点在于其中的一个参数requestCode. 举例说明如下: public void setClock(){ if(lva....
Notification 和 PendingIntent 是 Android 中两种重要的机制,用于实现系统状态栏中的通知和指定操作的执行。在上面的代码中,我们学习了如何使用 Notification 和 PendingIntent 来实现一个简单的通知机制,并了解...
Intent1_Intent.zip中的源码应该包含了关于Intent的实例和使用方法,让我们一起深入探讨Intent在Android应用中的作用、类型、创建与传递、以及常见用法。 1. **Intent的作用** Intent的主要功能是启动一个活动...
总之,PendingIntent是Android系统中一个强大的工具,它使得Intent的操作可以跨越时间和空间,为应用程序的交互和扩展提供了极大的便利。理解和熟练运用PendingIntent,对于开发高质量的Android应用至关重要。
本压缩包"Android代码-Intent切换.zip"很可能包含了一些关于如何使用Intent进行界面跳转和数据传递的示例代码。 Intent主要分为显式Intent和隐式Intent两种类型。显式Intent明确指定了要启动的目标组件,通常在同一...
在这个"AndroidIntent切换.zip"压缩包中,可能包含了一系列关于如何在Android应用中使用Intent进行Activity切换的示例和教程。 首先,理解Intent的基本概念是至关重要的。Intent分为显式Intent和隐式Intent。显式...
本实验将深入探讨Android Studio中Intent的使用,帮助你更好地理解如何在不同的Activity之间跳转和传递信息。 首先,让我们了解Intent的基本概念。Intent分为两种类型:显式Intent和隐式Intent。显式Intent用于启动...
在Android开发中,Intent是一个非常核心且至关重要的概念。Intent被设计用来在应用程序的不同组件之间进行通信,也可以用于启动服务或者广播数据。本教程将深入探讨Intent的基本使用和功能,帮助初学者理解这一基础...
3. IntentFlag:在创建PendingIntent时,可以通过setFlags()方法设置Intent标志,比如FLAG_CANCEL_CURRENT和FLAG_UPDATE_CURRENT,它们会影响PendingIntent的行为,如替换已存在的Intent或取消当前PendingIntent并...
`AlarmManager`和`PendingIntent`是Android系统提供的两个关键组件,用于实现这样的定时提醒功能。下面将详细阐述这两个组件的工作原理及其结合使用的方式。 `AlarmManager`是Android系统中的一个服务,它允许应用...
当创建`PendingIntent`时,需要提供一个Intent实例,这个Intent包含了操作的目标(如ComponentName)、数据(Uri、Extras等)和操作类型(ACTION_VIEW、ACTION_SEND等)。 3. **唯一标识符**:`PendingIntent`通过`...
在Android平台上,开发一款能够发送短信的应用程序是常见的需求,这涉及到对SmsManager和PendingIntent对象的理解和使用。这两个核心组件是实现Android系统中短信发送功能的关键。 首先,我们来详细了解一下...
综上所述,PendingIntent是Android开发中的一个重要工具,它允许开发者在不同组件之间安全地传递和延迟执行Intent操作,为应用的复杂交互提供了便利。理解并正确使用PendingIntent对于编写健壮、安全的Android应用至...