启动器活动上的未知意图标志

时间:2015-04-26 09:14:56

标签: android android-intent

我有Activity launchmode = "singleInstance",它是该应用的启动器Activity。现在,我正在尝试检测Flag我的Activity将会启动哪个Intent,但我找不到Flag String version of the Flag id is 270532608 04-25 20:18:57.061: V/logtag(1665): Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=<filtered> } 的标记ID 3}};这是旗帜

Activity

和Intent的String版本是

Flag

当应用程序首次启动时,系统会使用此Intent.FLAG_ACTIVITY_NEW_TASK = 268435456或字符串版本= 0x10200000(它应该)调用我的public partial class PersonOne { public int id { get; set; } public string name { get; set; } public string surname { get; set; } public string address { get; set; } public string phone { get; set; } } public partial class PersonTwo { public int id { get; set; } public string firstname { get; set; } public string lastname { get; set; } public string email { get; set; } } 但是当我退出时应用程序,然后从启动器再次启动它我得到此标志List<PersonOne> personOneList = new List<PersonOne>(); // very big list List<PersonTwo> personTwoList = new List<PersonTwo>(); // very big list List<PersonTwo> difference = personTwoList .GroupBy(x => new { FirstName = x.firstname.ToLower(), LastName = x.lastname.ToLower() }) .Select(x => x.First()) .Where(x => !personOneList.Any(y => y.name.Equals(x.firstname, StringComparison.InvariantCultureIgnoreCase) && y.surname.Equals(x.lastname, StringComparison.InvariantCultureIgnoreCase))) .ToList(); 而不是之前的标志

  

所以我的问题是谁能告诉我这是什么旗帜?

     

为什么我的活动被调用了?

     

并且启动器中是否有任何其他实例可以使用除了未知标记之外的其他标记触发我的活动。 0x10200000?

2 个答案:

答案 0 :(得分:8)

它是旗帜的组合:

public static final int FLAG_ACTIVITY_NEW_TASK = 0x10000000;

public static final int FLAG_ACTIVITY_RESET_TASK_IF_NEEDED = 0x00200000;

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;

答案 1 :(得分:1)

首先,此flag 0x10200000值位于Hexadecimal而非Decimal,这就是为什么如果您尝试使用Google,可能找不到任何有用的信息。< / p>

这就是为什么你必须首先convert到十进制。然后,您会看到真正的flag值为270532608,这意味着开始上一个任务的新任务

  

为什么用它调用我的活动?

因为您可能正在恢复后台实例(最近的应用列表)。没有启动新实例

如果您想了解有关此意图标志的更多信息,请点击here

参考:Start new activity in window manager