Ell*_*ltz 3 android android-intent
我有一个Activity,launchmode = "singleInstance"它是Activity应用程序的启动器.现在我正在尝试检测Flag我的Activity/将要启动哪个,但是我无法Intent Flag在记录的页面上找到带有s 的标记id ; 这是旗帜
String version of the Flag id is 270532608
Run Code Online (Sandbox Code Playgroud)
和Intent的字符串版本是
04-25 20:18:57.061: V/logtag(1665): Intent { act=android.intent.action.MAIN
cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=<filtered> }
Run Code Online (Sandbox Code Playgroud)
当应用程序第一次启动时,系统Activity使用this Flag= Intent.FLAG_ACTIVITY_NEW_TASK或string version = 268435456(它应该)调用我,但是当我退出应用程序并从启动器再次启动它时,我得到此标志0x10200000而不是之前的标志
所以我的问题是谁能告诉我这是什么旗帜?
为什么我的活动被召唤?
还有来自启动器的任何其他实例,我的活动可能会被一个不同的标志触发,除了未知的标志和0x10200000之外?
这是旗帜的组合:
public static final int FLAG_ACTIVITY_NEW_TASK = 0x10000000;
Run Code Online (Sandbox Code Playgroud)
和
public static final int FLAG_ACTIVITY_RESET_TASK_IF_NEEDED = 0x00200000;
Run Code Online (Sandbox Code Playgroud)
0x10000000是268435456的十六进制表示法
.0x00200000是2097152的十六进制表示法.
如果添加这些数字,则得到:
0x10200000,这是270532608的十六进制表示法.
因此,当您第一次启动应用程序时,您会得到FLAG_ACTIVITY_NEW_TASK,但第二次您也会得到FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.这只是一个按位OR运算.要检查所需的标志是否处于活动状态,您可以执行按位AND,如下所示:
boolean hasNewTaskFlag = (flg & FLAG_ACTIVITY_NEW_TASK) != 0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3714 次 |
| 最近记录: |