`

Android PendingIntent解读

 
阅读更多
/**
 * A description of an Intent and target action to perform with it.  Instances
 * of this class are created with {@link #getActivity},
 * {@link #getBroadcast}, {@link #getService}; the returned object can be
 * handed to other applications so that they can perform the action you
 * described on your behalf at a later time.
 *
 * <p>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:
 * often, for example, the base Intent you supply will have the component
 * name explicitly set to one of your own components, to ensure it is ultimately
 * sent there and nowhere else.
 *
 * <p>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.  If the creating application later re-retrieves the
 * same kind of PendingIntent (same operation, same Intent action, data,
 * categories, and components, and same flags), it will receive a PendingIntent
 * representing the same token if that is still valid, and can thus call
 * {@link #cancel} to remove it.
 */
public final class PendingIntent implements Parcelable {}



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区别:Intent一般是用作Activity、Sercvice、BroadcastReceiver之间传递数据,而Pendingintent,一般用在Notification上,可以理解为延迟执行的intent,PendingIntent是对Intent一个包装。

用法:
  
/** @param context The Context in which this PendingIntent should start
     * the service.
     * @param requestCode Private request code for the sender (currently
     * not used).
     * @param intent An Intent describing the service to be started.
     * @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},
     * {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT},
     * or any of the flags as supported by
     * {@link Intent#fillIn Intent.fillIn()} to control which unspecified parts
     * of the intent that can be supplied when the actual send happens.
     *
     * @return Returns an existing or new PendingIntent matching the given
     * parameters.  May return null only if {@link #FLAG_NO_CREATE} has been
     * supplied.
     */

PendingIntent getActivity(Context context, int requestCode,Intent intent, int flags);
PendingIntent getBroadcast(Context context, int requestCode,Intent intent, int flags);
PendingIntent getService(Context context, int requestCode,Intent intent, int flags);
分享到:
评论

相关推荐

    Android 之 PendingIntent用法介绍

    在Android开发中,PendingIntent是一个非常重要的组件,它允许我们延迟执行某个操作或者将操作传递给其他应用。这个组件在很多场景下都有广泛的应用,比如通知、BroadcastReceiver、Service等。接下来,我们将深入...

    android 服务 Service PendingIntent 通知

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

    Android中pendingIntent的深入理解

    在Android开发中,PendingIntent是一个非常关键且独特的组件,它为应用程序提供了跨进程通信的能力,使得一个应用可以请求系统在未来的某个时刻执行特定的操作。PendingIntent不仅涉及到了Android的权限模型,还涉及...

    Android中PendingIntent的简要介绍.pdf

    **Android中的PendingIntent详解** PendingIntent是Android系统中一个非常重要的概念,它是Intent的一个特殊形式,主要用于在应用程序的组件之间传递意图(Intent),并确保这些意图在特定的时间或由特定的事件触发...

    Android中pendingIntent与Intent的深入分析

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

    Android编程实现PendingIntent控制多个闹钟的方法

    本文实例讲述了Android编程实现PendingIntent控制多个闹钟的方法。分享给大家供大家参考,具体如下: 要用 android.app.PendingIntent.getBroadcast(Context context, int requestCode, Intent intent)来实现控制多...

    安卓之 (解决问题)PendingIntent和Intent的区别1

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

    AppWidget的getBroadcast

    在Android的`PendingIntent`类中,`getBroadcast`方法是用来创建一个PendingIntent,该Intent将在未来某个时刻由系统广播给指定的BroadcastReceiver。当我们在AppWidget中使用`getBroadcast`时,我们通常是希望在...

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

    在Android开发中,`PendingIntent`是一个非常关键的组件,它允许一个应用组件(如Activity、Service或BroadcastReceiver)在另一个应用组件中执行一个动作,即使原来的组件已经被销毁或者当前进程不可用。...

    PendingIntent 使用示例

    PendingIntent是Android系统中一个非常重要的组件,它允许应用程序在另一个上下文环境中执行特定操作。在Android应用开发中,PendingIntent常用于启动服务、发送广播、显示通知等场景,为应用提供了一种跨进程调用的...

    android 自制发送短信程序 SmsManager与PendingIntent对象

    在Android平台上,开发一款能够发送短信的应用程序是常见的需求,这涉及到对SmsManager和PendingIntent对象的理解和使用。这两个核心组件是实现Android系统中短信发送功能的关键。 首先,我们来详细了解一下...

    自制发送短信程序,android,SmsManager与PendingIntent

    import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; /*必需引用telephony.gsm.SmsManager类才能使用sendTextMessage()*/ import android.telephony.SmsManager; ...

    mooc_android_lesson18_AlarmManager和PendingIntent实现定时提醒功能

    `AlarmManager`和`PendingIntent`是Android系统提供的两个关键组件,用于实现这样的定时提醒功能。下面将详细阐述这两个组件的工作原理及其结合使用的方式。 `AlarmManager`是Android系统中的一个服务,它允许应用...

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

    `PendingIntent`在Android中是一个非常重要的类,它可以理解为一个待执行的操作。在短信发送场景中,`PendingIntent`用于创建意图(Intent)并将其绑定到广播接收器,以便在特定事件(如短信发送成功或失败)发生时...

    PendingIntent

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

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

    在Android开发中,`AlarmManager`和`PendingIntent`是两个非常重要的组件,它们用于实现应用程序在特定时间或触发特定事件时执行任务的功能。本文将深入探讨这两个组件的使用,并结合给定的“附件Home监听十分钟后...

    Notification的用法和PendingIntent使用

    PendingIntent 则是 Android 中的一种机制,用于在特定的时间点执行某些操作。 Notification 的用法 Notification 的用法主要包括以下几个步骤: 1. 获得系统通知服务的管理类:使用 `getSystemService` 方法获取...

Global site tag (gtag.js) - Google Analytics