了解Android中的粘性意图

时间:2014-09-25 12:36:24

标签: android

在android中有3种Intent,

  1. 意图,
  2. Sticky Intent,
  3. 待定意图。
  4. 那么什么是粘性意图?

6 个答案:

答案 0 :(得分:60)

  

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

     

粘性意图 - 用于Android的棒,用于未来的广播听众。例如,如果BATTERY_LOW事件发生那么意图   将坚持Android以便任何未来的请求   BATTERY_LOW,将返回Intent。

     

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

答案 1 :(得分:28)

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

OR

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

答案 2 :(得分:4)

Pending Intent: Pending Intent实际上是一个对象,它包含一个Intent,可以通过另一个应用程序完成未来的工作。

它允许我们将未来的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

示例:

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();
}

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

Sticky Intent:这些是为未来的广播听众提供Android的Intents。

Sticky Intent也是一种Intent,允许在函数和服务之间进行通信sendStickyBroadcast(),执行一个称为sticky的sendBroadcast(Intent),你发送的意图在广播完成后保持不变,其他人可以通过registerReceiver(BroadcastReceiver,IntentFilter)的返回值快速检索数据。在所有其他方面,这与sendBroadcast(Intent)的行为相同。

通过操作系统发送的粘性广播的一个示例是ACTION_BATTERY_CHANGED。当您为该操作调用registerReceiver()时 - 即使使用null BroadcastReceiver - 您将获得该操作的最后一次广播的Intent。因此,您可以使用它来查找电池的状态,而无需注册电池的所有未来状态更改。

答案 3 :(得分:3)

  

Intent :Intent是一个异步消息,用于在android中的组件之间进行通信,Content Provider除外。   例如,你可以开始活动   startActivity(意图意图);

     

Sticky Intent :粘性意图与未来广播事件的android系统相关联。

     

待定意图:您希望将来在应用程序未处于活动状态时触发的意图。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

Sticky Intent允许函数和服务之间的通信sendStickyBroadcast()执行sendBroadcast(Intent)知道为粘性,您发送的Intent在广播完成后保持不变,以便其他人可以通过返回值快速检索该数据registerReceiver(BroadcastReceiver,IntentFilter)。在所有其他方面,这与sendBroadcast(Intent)相同。