Intent.addFlags 使用 for 循环

Intent.addFlags using for loop

使用 for 循环向意图添加标志是否会覆盖之前在循环中添加的标志?

示例 1:

我想达到的目标

int[] flags = {Intent.FLAG_ACTIVITY_NEW_TASK, Intent.FLAG_ACTIVITY_CLEAR_TASK};

for (int flag: flags) {
     intent.addFlags(flag);
}

示例 2:

通常如何添加标志

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

示例 3:

示例 1 中 for 循环的简单代码表示

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

原因:

例4:

我正在将标志传递给方法

public void startActivity(int[] flags) {
      for (int flag: flags) {
          intent.addFlags(flag);
      }
}

分辨率:

如果 for 循环确实覆盖了之前添加的标志,我如何使用示例 4 中的方法实现示例 2 中的代码?

我其实并不熟悉 android Intent,但看起来你只是简单地组合存储在整数中的位,所以你可以这样做:

int combinedFlags = 0;
for (int flag : flags) {
    combinedFlags |= flag;
}
intent.addFlags(combinedFlags);