我有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?
答案 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)