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;