最近,好些天都在看源码,现在 对这个Intent的FLAG有一些总结。都是我自己试验的,总结的 ,可能有不对的地方,大家可以评论指出。
使用
对intent使用FLAG 大多数人都知道怎么弄。也就是调用public @NonNull Intent setFlags(@Flags int flags)
这个方法。但是如果 你同时要设定两个FLAG标识呢?
这个有两种方式可以解决。
第一种:
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_NEW_TASK);
第二种:
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_NEW_TASK);
第三种: 这种方式要注意 setFlags()要先被调用,后调用的话,会只有最后setFlags(int flags)里面参数生效。这个看源码就可以知道 setFlags会把自己的参数直接赋值给intent的mFlags。addFlags则会将自己的参数 和mFlags做 或运算 ,最后赋值给 mFlags。
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_