gpt4 book ai didi

android Intent setFlags 问题

转载 作者:行者123 更新时间:2023-11-29 14:34:42 25 4
gpt4 key购买 nike

我遇到了一些用于启动新 Activity 的 Intent 的代码,该 Activity 包含直接带有 int 的 Intent :intent.setFlags(268435456);

而不是适当的 Intent.FLAG_ACTIVITY_NEW_TASK 或者你有什么。

找出这个 int 实际上等同于什么的最好方法是什么,这样我们就不会因为设置错误而破坏应用程序?我想稍微清理一下这段代码。

最佳答案

标志基于设置单个位,因此您要做的第一件事就是将该值转换为二进制。您可以使用任何允许您在十进制和二进制之间进行转换的标准计算器应用程序来执行此操作。在这种情况下:

‭0001 0000 0000 0000 0000 0000 0000 0000‬
^

只有一位设置为真(从右起第 28 位)。所有 Intent 标志都声明为十六进制值(例如 FLAG_ACTIVITY_NEW_TASK = 0x10000000),因此您可能只想将其转换为十六进制并找出匹配的值。

public static final int FLAG_ACTIVITY_NEW_TASK = 0x10000000;

事实证明,这就是我们在这种情况下要寻找的那个。假设您有一个更复杂的 - 多个标志的组合:

intent.setFlags(335544320);

再次,转换为二进制:

‭0001 0100 0000 0000 0000 0000 0000 0000‬
^ ^

所以我们这里有两个标志。将它们分成两个单独的值,每个值只设置一个标志:

0001 0000 0000 0000 0000 0000 0000 0000
0000 0100 0000 0000 0000 0000 0000 0000

转换为十六进制:

0x10000000
0x04000000

查看 Intent 的源代码,它映射到:

Intent.FLAG_ACTIVITY_NEW_TASK
Intent.FLAG_ACTIVITY_CLEAR_TOP

所以你的等效替换是:

intent.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP);

关于android Intent setFlags 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52390129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com