了解Android中的粘性意图

She*_*bu. 39 android

在android中有3种意图,

  1. 意图,
  2. 粘性意图,
  3. 等待意图.

那粘性意图是什么?

Aru*_*ney 66

Intent - 是Android组件之间的消息传递机制,Content Provider除外.您可以使用Intent启动任何组件.

Sticky Intent - 用于Android的棒,用于未来的广播听众.例如,如果发生BATTERY_LOW事件,那么Intent将坚持使用Android,以便将来对BATTERY_LOW的任何请求都将返回Intent.

待定意图 - 如果您希望某人在未来的某个时间点代表您执行任何意图操作,那么我们将使用Pending Intent.


Uma*_*air 30

与粘性广播一起使用的意图称为粘性意图.这个意图将坚持使用android系统为未来的广播接收器请求.

要么

sendStickyBroadcast()执行一个sendBroadcast(Intent)称为粘性的,即你发送的意图在广播完成后保持不变,以便其他人可以通过返回值快速检索该数据registerReceiver(BroadcastReceiver, IntentFilter).在所有其他方面,这与行为相同sendBroadcast(Intent).通过操作系统发送的粘性广播的一个例子是ACTION_BATTERY_CHANGED.当您调用registerReceiver()该操作时 - 即使使用null BroadcastReceiver - 您将获得上次为该操作广播的Intent.因此,您可以使用它来查找电池的状态,而无需注册电池的所有未来状态更改.

  • 粘性意图只对广播有用吗? (2认同)
  • @IgorGanapolsky 是的,粘性意图仅对粘性广播有用。这就是为什么由于内存问题而不鼓励实施它们。 (2认同)

小智 7

Intent:Intent是异步消息,用于在Android中的Content Provider之外的组件之间进行通信。例如,您可以通过startActivity(Intent intent)启动活动;

粘性意图:粘性意图与android系统关联,用于将来的广播事件。

待定意图:您希望将来在应用程序不活跃时触发的那些意图。


Dee*_*war 6

待定意图: 待定意图实际上是一个包装了意图的对象,以便将来由另一个应用程序进行某些工作。

它使我们可以将将来的Intent传递给另一个应用程序,并允许该应用程序执行该Intent,就好像它具有与我们的应用程序相同的权限一样,而在最终调用Intent时我们的应用程序是否仍然存在。

PendingIntent通常用于需要执行AlarmManager或用于通知的情况。PendingIntent提供了一种使应用程序工作的方法,即使它们退出了进程也是如此。

PendingIntent使用以下方法来处理不同类型的意图:

PendingIntent.getActivity() : Retrieve a PendingIntent to start an Activity
PendingIntent.getBroadcast() : Retrieve a PendingIntent to perform a Broadcast
PendingIntent.getService() : Retrieve a PendingIntent to start a Service
Run Code Online (Sandbox Code Playgroud)

范例:

Intent intent = new Intent(this, SomeActivity.class);

// Creating a pending intent and wrapping our intent
PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
try {
    // Perform the operation associated with our pendingIntent
    pendingIntent.send();
} catch (PendingIntent.CanceledException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

意图: 意图基本上是Android的不同组件之间的消息传递机制,内容提供者除外。您可以使用Intent启动Android中的任何组件。

粘性意图: 这些意图是Android坚持使用的,用于将来的广播侦听器。

粘性意图也是一种意图,它允许功能与服务之间进行通信sendStickyBroadcast(),执行称为粘性的sendBroadcast(Intent),您要发送意图会在广播完成后保持存在,以便其他人可以快速检索通过registerReceiver(BroadcastReceiver,IntentFilter)的返回值获取该数据。在所有其他方面,此行为与sendBroadcast(Intent)相同。

通过操作系统发送的粘性广播的一个示例是ACTION_BATTERY_CHANGED。当您为该动作调用registerReceiver()时(即使使用的是BroadcastReceiver为空),您也会获得该动作的最后广播的Intent。因此,您可以使用它来查找电池的状态,而不必注册电池中所有将来的状态变化。