`
寻梦者
  • 浏览: 637373 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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代码:

  1. private void showNotify(){
  2. Notification notice=new Notification();
  3. notice.icon=R.drawable.icon;
  4. notice.tickerText=”您有一条新的信息”;
  5. notice.defaults=Notification.DEFAULT_SOUND;
  6. notice.when=10L;
  7. // 100 毫秒延迟后,震动 250 毫秒,暂停 100 毫秒后,再震动 500 毫秒
  8. //notice.vibrate = new long[] { 100, 250, 100, 500 };出错?
  9. //notice.setLatestEventInfo(this, “通知”, “开会啦”, PendingIntent.getActivity(this, 0, null, 0));
  10. notice.setLatestEventInfo(this, “通知”, “开会啦”, PendingIntent.getActivity(this, 0, new Intent(this,Activity2.class), 0));//即将跳转页面,还没跳转
  11. NotificationManager manager=(NotificationManager)getSystemService(this.NOTIFICATION_SERVICE);
  12. manager.notify(0,notice);
  13. }
复制代码

       1. GSM网络中android发送短信示例

java代码:

  1. String msg =”你好,美女”;
  2. String number = “135****6784″;
  3. SmsManager sms = SmsManager.getDefault(); 

  4. PendingIntent pi = PendingIntent.getBroadcast(SmsActivity.this,0,new Intent(…),0);
  5. sms.sendTextMessage(number, null, msg, pi, null);
  6. 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的区别1

    在Android开发中,Intent和PendingIntent是两个非常重要的概念,它们在组件间的通信中起到关键作用。Intent可以理解为一种消息传递对象,用于在不同组件之间传递行为和数据,而PendingIntent则是Intent的一种封装,...

    Intent和PendingIntent的区别

    简单的总结了Intent和PendtingIntent的区别,经常与alermanger 和notificationmanager一起使用。

    Android中pendingIntent与Intent的深入分析

    在Android开发中,Intent和PendingIntent是两个非常关键的概念,它们在应用程序的组件间通信中起着重要作用。Intent主要用于启动或传递数据给另一个组件,如Activity、Service或BroadcastReceiver,而PendingIntent...

    Android 之 PendingIntent用法介绍

    PendingIntent的生命周期与Intent关联,Intent中的数据(如动作、数据、类别、额外数据)都会影响到PendingIntent。例如,当我们更新Notification的Intent时,如果使用了`FLAG_UPDATE_CURRENT`,那么先前的...

    博客《详解PendingIntent》对应的有问题的PendingIntent源码

    2. **意图(Intent)**:`PendingIntent`是基于Intent构建的,Intent定义了要执行的操作。当创建`PendingIntent`时,需要提供一个Intent实例,这个Intent包含了操作的目标(如ComponentName)、数据(Uri、Extras等)...

    PendingIntent 使用示例

    3. IntentFlag:在创建PendingIntent时,可以通过setFlags()方法设置Intent标志,比如FLAG_CANCEL_CURRENT和FLAG_UPDATE_CURRENT,它们会影响PendingIntent的行为,如替换已存在的Intent或取消当前PendingIntent并...

    Android中pendingIntent的深入理解

    PendingIntent是一个抽象的意图(Intent),它封装了Intent并附加了执行该Intent所需的权限。当其他应用或系统组件需要执行与该Intent相关的行为时,它们可以通过PendingIntent来安全地访问我们的应用资源,而无需...

    Android中PendingIntent的简要介绍.pdf

    参数`requestCode`用于区分多个PendingIntent,`intent`是待执行的Intent,`flags`则控制PendingIntent的行为,如`FLAG_UPDATE_CURRENT`表示如果存在相同的PendingIntent,则更新它的Intent数据。 **3. 使用...

    Notification的用法和PendingIntent使用

    1. 实例化 pending Intent:使用 `PendingIntent` 构造函数创建一个新的 pending Intent 对象,并指定要执行的操作。 2. 设置 pending Intent:使用 `setLatestEventInfo` 方法将 pending Intent 设置到Notification...

    android 服务 Service PendingIntent 通知

    `PendingIntent`是Android中的一个关键类,它代表一个意图(Intent)的动作,可以在未来的某个时刻由系统或者其他应用触发。`PendingIntent`主要用于跨进程通信,例如在通知(Notification)中使用,当用户点击通知...

    PendingIntent

    PendingIntent是Android操作系统中的一个关键概念,它是Intent的一种延时或待处理版本。在Android应用开发中,PendingIntent主要用于在应用程序上下文之外执行操作,比如发送广播、启动服务或者启动新的Activity。它...

    自制发送短信程序--SmsManager与PendingIntent类的使用

    在短信发送场景中,`PendingIntent`用于创建意图(Intent)并将其绑定到广播接收器,以便在特定事件(如短信发送成功或失败)发生时触发相应的动作。创建`PendingIntent`通常使用`getBroadcast()`方法: ```java ...

    AlarmManager、PendingIntent的使用\\附件Home监听十分钟后再次启动应用取消服务

    接着,`PendingIntent`是Android系统的一个特殊意图(Intent),它封装了对另一个应用组件(如Activity、Service或BroadcastReceiver)的操作。`PendingIntent`的主要作用是保护应用程序的隐私,确保只有指定的应用...

    谈谈安卓的Intent注入.pdf

    归纳了Intent入 的4种形式:Intent转换与复制、 Action/Component/Data注 、PendingIntent误用与 parseUri注 入 归纳了利用自动化的工具具发现这4类形式的方法,通过批 量的扫描,可以轻易发现这些漏洞 在每种都找到了...

    Android Studio 实验二:Intent的使用

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TargetActivity.class), 0); ``` 通过以上讲解,你应该对Android Studio中的Intent有了全面的了解。Intent作为Android组件...

    mooc_android_lesson18_AlarmManager和PendingIntent实现定时提醒功能

    `PendingIntent`则是一个抽象的意图(Intent),它封装了对一个操作的请求,当`AlarmManager`触发时,会使用这个`PendingIntent`来启动或广播目标操作。`PendingIntent`确保只有授权的应用程序可以执行相关操作,...

    Android应用源码之Intent1_Intent.zip

    Intent1_Intent.zip中的源码应该包含了关于Intent的实例和使用方法,让我们一起深入探讨Intent在Android应用中的作用、类型、创建与传递、以及常见用法。 1. **Intent的作用** Intent的主要功能是启动一个活动...

    Andriod Intent使用代码举例

    - 使用`PendingIntent`,将Intent包装成可延迟执行的对象,常用于通知、AlarmManager等场景。 - `Intent.createChooser(Intent target, CharSequence title)`:创建一个Intent选择器,让用户从多个可处理相同...

    博客《详解PendingIntent》有问题的源码第二部分

    `PendingIntent`并非一个意图(Intent)本身,而是对意图的一种表示,它可以被其他应用持有并执行。这种持有权使得外部应用能够触发我们的应用的特定行为,但只能在我们定义的范围内操作。 2. **创建与类型**: `...

Global site tag (gtag.js) - Google Analytics