今天在开发GPS时,临近警告这个部分的时候,又遇到了PendingIntent这个知识点,其实遇到过很多次了,今天就好好总结一下。
pendingIntent直观意义上的解释就是:等待的,未决定的Intent。
要得到一个pendingIntent对象,使用方法类的静态方法 :
getActivity(Context,int,Intent,int);
getBroadcast(Context,int,Intent,int);
getService(Context,int,Intent,int);
以上三个分别对应着Intent的是三个行为,分别是调到一个activity,打开一个广播,打开一个服务。
值得注意的是:以上方法都有Context作为参数,后面做详细解释。
pendingIntent是一种特殊的Intent。主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的,其操作的执行是需要满足某些条件的。
主要的使用的地方和例子:通知Notificatio的发送,短消息SmsManager的发送和警报器AlarmManager的执行等等。
Android的状态栏通知(Notification)
如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息。
发送消息的代码如下:
<span style="font-size:12px;">//获取通知管理器 NotificationManagermNotificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE) int icon =android.R.drawable.image; long time =System.currentTimeMillis();//通知发生的时间为系统当前时间 //新建一个通知,指定其图标和标题 Notificationnotification = new Notification(icon, null,time);//第一个参数为图标,第二个参数为短暂提示标题,第三个为通知时间 notification.defaults= Notification.DEFAULT_SOUND;//发出默认声音 notification.flags|= Notification.FLAG_AUTO_CANCEL;//点击通知后自动清除通知 Intent openintent= new Intent(this, OtherActivity.class); PendingIntentcontentIntent = PendingIntent.getActivity(this, 0, openintent, 0);//当点击消息时就会向系统发送openintent意图 notification.setLatestEventInfo(this,“标题”, “我是发送的内容", contentIntent); mNotificationManager.notify(0,notification);//第一个参数为自定义的通知唯一标识</span>
下面讲一下关于参数中的Context:
PendingIntent主要持有的信息是它所包装的Intent和当前Application的Context。正由于PendingIntent中保存有当前Application的Context,使它赋予带其他程序一种执行的Intent的能力,就算在执行时当前Application已经不存在了,也能通过存在PendingIntent里的Context照样执行Intent。
综上所述:PendingIntent是满足一定条件下的Intent,即不是立马跳转到其他组件的时候需要用PendingIntent,一般有几种应用场合,通知Notificatio的发送,短消息SmsManager的发送和警报器AlarmManager的执行!