Android的IntentSender,Android PendingIntent的深入理解

Android PendingIntent的深入理解

时间:2011-04-20 10:40:17 来源:DevDiv移动开发社区 作者:Vincent

Intent比较简单,类似消息,发送给别的activity,别的activity会立即执行

我主要说说什么是PendingIntent以及它的执行过程

以alarm service为例:

1. activity请求一个alarm一般这样来做:

# //创建一个PendingIntent

# Intent intent = new Intent(ALARM_ALERT_ACTION);

# intent.putExtra(ID, id);

# intent.putExtra(TIME, atTimeInMillis);

# PendingIntent sender = PendingIntent.getBroadcast(

#                 context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

# //获得AlarmMnager并注册一个新闹铃,

# //一次性闹铃的设置

#

# AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);

# am.set(AlarmManager.POWER_OFF_WAKEUP, atTimeInMillis, sender);

2. AlarmManager.set调用AlarmManagerService.set

3. AlarmManagerService.set的核心代码如下:

05bf477c6bc8eb6cd838489e2bfb03cf.png

我们可以看到它就是把PendingIntent保存起来而已

4. alarm manager service会定时查看是否有alarm到期了,如果到期了做相应处理。

5. AlarmThread会调用

alarm.operation.send(mContext, 0,

mBackgroundIntent.putExtra(

Intent.EXTRA_ALARM_COUNT, alarm.count),

mResultReceiver, mHandler);

也就是通过PendingIntent.send执行intent操作,alarm这个就会发送ALARM_ALERT_ACTION的broadcast。

补充说明:

1. PendingIntent重要特点是异步处理。

2. 另外有一个要说明的是PendingIntent.onFinished,它可以作为PendingIntent.send的一个参数,

我们知道PendingIntent.send一般是在service中执行,这个调用的send后,回调onFished类的onSendFinished,所以onSendFinished一般也是在service中执行的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值