【第22期】观点:IT 行业加班,到底有没有价值?

Android中PendingIntent的基本用法

原创 2015年11月18日 16:26:13

在PendingIntent.java文件中,我们可以看到有如下几个比较常见的静态函数:

public static PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags)
public static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags)
public static PendingIntent getService(Context context, int requestCode, Intent intent, int flags)
public static PendingIntent getActivities(Context context, int requestCode, Intent[] intents, int flags)
public static PendingIntent getActivities(Context context, int requestCode, Intent[] intents, int flags, Bundle options)

上面的getActivity()的意思其实是,获取一个PendingIntent对象,而且该对象日后激发时所做的事情是启动一个新activity。也就是说,当它异步激发时,会执行类似Context.startActivity()那样的动作。相应地,getBroadcast()和getService()所获取的PendingIntent对象在激发时,会分别执行类似Context..sendBroadcast()和Context.startService()这样的动作。至于最后两个getActivities(),用得比较少,激发时可以启动几个activity。

(1)intent就是需要启动的Activity、Service、BroadCastReceiver的intent。

(2)Flags的类型:
FLAG_ONE_SHOT:得到的pi只能使用一次,第二次使用该pi时报错
FLAG_NO_CREATE: 当pi不存在时,不创建,返回null
FLAG_CANCEL_CURRENT: 每次都创建一个新的pi
FLAG_UPDATE_CURRENT: 不存在时就创建,创建好了以后就一直用它,每次使用时都会更新pi的数据(使用较多)

在AlarmManager中的使用

Intent intent = new Intent("action", null, context, serviceClass);  
PendingIntent pi = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);  
AlarmManager manager = (AlarmManager)probe.getSystemService(Context.ALARM_SERVICE);  
manager.set(AlarmManager.RTC_WAKEUP, milis, pi); 

在NotificationManager中的使用

Intent intent = new Intent();  
intent.setAction("myaction");  
PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);  

NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  
Notification n = new Notification();  
n.icon = R.drawable.ic_launcher;  
n.when = System.currentTimeMillis();  
n.setLatestEventInfo(this,"this is title", "this is a message", pi);  
nm.notify(0, n); 

两个重要方法:
send()方法是用,调用PendingIntent.send()会启动包装的Intent(如启动service,activity)

cancel()方法是为了解除PendingIntent和被包装的Intent之间的关联,此时如果再调用send()方法,则会抛出CanceledException异常

PendingIntent和Intent的区别:
PendingIntent就是一个Intent的描述,我们可以把这个描述交给别的程序,别的程序根据这个描述在后面的别的时间做你安排做的事情
换种说法Intent 字面意思是意图,即我们的目的,我们想要做的事情,在activity中,我们可以立即执行它
PendingIntent 相当于对intent执行了包装,我们不一定一定要马上执行它,我们将其包装后,传递给其他activity或application
这时,获取到PendingIntent 的application 能够根据里面的intent 来得知发出者的意图,选择拦击或者继续传递或者执行。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

android学习十八(Service服务的基本用法)

定义一个服务     在项目中定义yig

Android笔记——Day5 *SQLite基本用法 *Broadcast广播机制 *WiFi基础

//本文中代码基本上是Mars老师的代码...--#     1、SQLite基本用法 参考:http://my.oschina.net/cathleen

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

PendingIntent -AlarmManager介绍

转载http://blog.csdn.net/liutao5757124/article/details/6064099   本文通过对Android内置闹铃功能的简单介绍,来让开发者朋友们了解基于<a h
  • 2528
  • 2528
  • 2011-07-09 19:05
  • 1271

webview在android端基本用法(三)

本文转发请标明:http://blog.csdn.net/yangjianbo456/article/details/70180248github地址:https://github.com/hytcy...

Android 之 PendingIntent用法介绍

[size=large][color=darkred][b]PendingIntent:[/b][/color][/size] [size=small][color=olive][b]1. 英文释义:intent,意图; pending 表示即将发生的事; 2. 作用:PendingInte...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)