我阅读了Android文档,但我仍然需要更多的说明。PendingIntent到底是什么?


当前回答

悬而未决的意图

暂挂意图是对常规意图的包装 供另一个应用程序使用。 它使其他应用程序能够执行包含的功能 行动,因为它是你的应用程序与所有的权限 申请已获批准

当你想打开一些应用程序组件,如活动/服务/BroadcastReceiver在以后的时间或指定的时间间隔后,你必须发送PendingIntent在这种情况下。它就像你给其他应用程序一段时间后代表你运行你的应用程序代码的许可条。因此,PendingIntent可以超越进程边界,比如你想要AlarmManager,这是另一个进程中的另一个应用程序,然后AlarmManager在你的应用程序上执行由PendingIntent指定的操作

其他回答

未决意图是一个令牌,你给一些应用程序执行你的应用程序的代表,不管你的应用程序进程是否活跃。

我认为文件是足够详细的: 未决的意图文档。

只要想想Pending Intents的用例(broadcast Intents, scheduling alarms),文档就会变得更加清晰和有意义。

顾名思义…PendingIntent

你可以过一段时间再做。这是另一个意图。它是一种将你的任务交给其他应用程序来执行的方式。

悬而未决的意图

暂挂意图是对常规意图的包装 供另一个应用程序使用。 它使其他应用程序能够执行包含的功能 行动,因为它是你的应用程序与所有的权限 申请已获批准

当你想打开一些应用程序组件,如活动/服务/BroadcastReceiver在以后的时间或指定的时间间隔后,你必须发送PendingIntent在这种情况下。它就像你给其他应用程序一段时间后代表你运行你的应用程序代码的许可条。因此,PendingIntent可以超越进程边界,比如你想要AlarmManager,这是另一个进程中的另一个应用程序,然后AlarmManager在你的应用程序上执行由PendingIntent指定的操作

什么是意图?

An Intent is a specific command in Android that allows you to send a command to the Android OS to do something specific. Think of it as an action that needs to take place. There are many actions that can be done such as sending an email, or attaching a photo to an email, or even launching an application. The logical workflow of creating an intent is usually as follows: a. Create the Intent b. Add Intent options -> Ex. what type of intent we are sending to the OS or any attributes associated with that intent, such as a text string or something being passed along with the intent c. RUN the Intent

现实生活中的例子:假设我早上醒来,我“打算”去洗手间。我首先要考虑去洗手间,但这并不能让我真正去洗手间。然后我必须告诉我的大脑先起床,然后去洗手间,然后放松,然后去洗手,然后去擦手。一旦我知道我要去哪里,我发送命令开始,我的身体采取行动。

什么是未决意图?

从现实生活中的例子继续,假设我想洗澡,但我想在刷牙和吃早餐后洗澡。所以我知道我至少要等30-40分钟才能洗澡。我脑子里还在想,我需要准备好衣服,然后上楼回到浴室,然后脱衣服,然后洗澡。然而,这要等到30-40分钟后才会发生。我现在有洗澡的意向。等待30-40分钟。

这就是挂起意图和常规意图之间的区别。常规意图可以在没有挂起意图的情况下创建,然而,为了创建挂起意图,你需要先设置一个常规意图。

PendingIntent基本上是一个包装另一个Intent对象的对象。然后它可以传递给一个外部应用程序,在那里你授予该应用程序执行操作的权利,即,执行意图,就像从你自己的应用程序的进程执行一样(相同的权限和身份)。出于安全原因,您应该始终将显式意图传递给PendingIntent,而不是隐式意图。

 PendingIntent aPendingIntent = PendingIntent.getService(Context, 0, aIntent,
                    PendingIntent.FLAG_CANCEL_CURRENT);