PendingIntent中的flag

本文详细解释了PendingIntent中的四种flag:FLAG_NO_CREATE、FLAG_CANCEL_CURRENT、FLAG_ONE_SHOT和FLAG_UPDATE_CURRENT,并通过实例演示了它们在通知中的行为。FLAG_UPDATE_CURRENT是最常用的,用于更新Intent的额外数据。FLAG_CANCEL_CURRENT会取消现有PendingIntent并生成新的,而FLAG_ONE_SHOT限制PendingIntent只能使用一次。
摘要由CSDN通过智能技术生成

PendingIntent中第四个参数flag:
目前有这几种flag:FLAG_NO_CREATE;FLAG_CANCEL_CURRENT;FLAG_ONE_SHOT;FLAG_UPDATE_CURRENT
最常用的是最后一种FLAG_UPDATE_CURRENT

个人理解(通俗易懂):
FLAG_NO_CREATE:很好理解,字面意思(没有创建)PendingIntent没有作用,对消息而言没有点击效果。说白了,就是点了没反应。

FLAG_ONE_SHOT:也很好理解,字面意思“只打一枪”,多明显,就是只能点一次,然后你不调用NotificationManager的cancel()方法的取消通知,back再点击通知也进不去,因为只能点一次,怎么样,很好理解吧。(PS:别想着改成FLAG_TWO_SHOT,FLAG_THREE_SHOT,并没有什么卵用,flag只有4种。)

FLAG_CANCEL_CURRENT 和FLAG_UPDATE_CURRENT相对来说比较复杂一点,但是也很好理解。
我们设置两个通知
manager.notify(1,notificataion);
manager2.notify(2,notificataion2);
这两个通知Intent的同一个PendingIntent,按顺序依次释放通知,如果两个flag都设置为FLAG_CANCEL_CURRENT,我们点击第一个通知,会发现,没有反应,就跟FLAG_NO_CREATE一样,但是我们此时点击第二个通知,即会进入Intent。我们可以理解为,第一个通知的点击效果被第二个通知清除了,我们只能通过最新的一条通知进去。但是,我们如果将两条flag都设置为FLAG_UPDATE_CURRENT,这时候,我们会发现,不过管是第一条还是第二条通知,都会进入Intent跳转。

测试代码如下:
MainActivity代码:

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {
   
private Button sendNotice;
private Button sendNotice2;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值