PendingIntent简介

PendingIntent 是 Android 中的一种特殊的 Intent,用于在应用外部(例如其他应用或系统组件)延迟执行操作。它封装了一个 Intent 和一个操作(如广播、服务、活动),并允许其他应用或系统以应用的权限执行这些操作。

结构

PendingIntent 的结构包括以下要素:

  1. Intent:要延迟执行的操作。
  2. 操作类型:包括 getActivitygetServicegetBroadcast
  3. 上下文(Context):提供 PendingIntent 所需的环境。
  4. 请求码(Request Code):用于区分不同的 PendingIntent 实例。
  5. 标志(Flags):定义 PendingIntent 的行为(如更新现有 PendingIntent)。

作用

PendingIntent 的主要作用是延迟执行操作,特别是在以下场景中:

  1. 通知:通过 PendingIntent,用户点击通知时可以启动活动、服务或发送广播。
  2. AlarmManager:定时执行任务。
  3. 跨应用通信:允许应用之间共享操作,例如授权其他应用发送广播或启动服务。

实际开发中的应用

获取USB权限

        private PendingIntent permissionIntent;
        // 初始化权限请求的 PendingIntent
        permissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), PendingIntent.FLAG_UPDATE_CURRENT);

        //省略中间部分代码

                if (device != null && isDeviceMatch(device)) {
                    //若无权限, 请求 USB 设备权限
                    if (!usbManager.hasPermission(device)) {
                        usbManager.requestPermission(device, permissionIntent);
                    } else {
                        // 向 USB 设备发送 AT 指令
                        sendATCommand(device);
                    }
                }

和Intent 的区别(为什么要有PendingIntent?)

Intent事件在程序启动之时就会执行,Intent 事件的执行时机取决于你调用相关方法的时间。例如,当你调用 startActivity(intent) 方法时,系统会立即启动对应的 Activity;当你调用 sendBroadcast(intent) 方法时,系统会立即发送广播。PendingIntent可以延迟执行,是因为它的启动是由其它事件来触发的,可以抽象理解为其它事件是一个按钮,按下会触发PendingIntent。通常,PendingIntent 用于在用户执行某些操作时(比如点击通知、点击小部件、点击某个按钮等)执行相关的操作。可以将其视为一个 "待执行的 Intent",而待执行的时机由其他事件来触发。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值