我用这行代码启动了我的应用
 intent.setFlags(805306368);,它将完美启动应用程序,并在后台运行时恢复运行。但是,整数805306368是什么意思?
如果我的应用程序正在运行,它将如何恢复它。任何人都知道。

最佳答案

805306368等效于0x30000000的十六进制,并且0x30000000用于打开带有以下标志的Intent

Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP


因此,等效使用上述组合或0x30000000

从Android文档FLAG_ACTIVITY_SINGLE_TOPFLAG_ACTIVITY_NEW_TASK

FLAG_ACTIVITY_SINGLE_TOP = 0x20000000
FLAG_ACTIVITY_NEW_TASK = 0x10000000


因此,0x30000000中的组合results

另外,如docs中所述,新任务标志即FLAG_ACTIVITY_NEW_TASK用于实现以下行为:


  使用此标志时,如果您正在启动的活动已经在运行任务,则不会启动新的活动;相反,当前任务将以其上次进入的状态简单地显示在屏幕的前面。


docs所述,使用单个最高标志,即FLAG_ACTIVITY_SINGLE_TOP来实现以下行为:


  如果设置了该活动,则如果该活动已经在历史记录堆栈的顶部运行,则不会启动该活动。


因此,这些标志有助于恢复您的活动并防止打开新活动。

10-07 12:05