看了不少Android 方面的书籍,每每会介绍Activity也都会介绍launchMode,但是会把Intent.Flag和Activity分开讲,但是我觉得两者是必然联系而且是密不可分的关于task 栈的管理,看到launchMode和Intent.Flag这些你会不会有疑问这两个的区别是什么?希望这篇文章和示例能够解答你的问题。
一言回答上面的问题,launchMode是规定你自己的Activity启动的行为模式,而Intent.Flag是你期望由你启动的其他的Activity是什么样的行为模式。
一个例子,从桌面启动launchMode为SigleTask的应用A通过StartActivity()启动了launchMode为star大人的的B,而B需要网络配置,于是通过StartActivity启动了wifi设置(这里不使用Activity C, 是为了给您更直观的认识,C的行为怎样更合理),这时候的task栈是什么样的呢?如图1,你配置的网络连接成功了然后点home键,再从桌面点击A,栈如图2,再通过StartActivity启动B,如图3,你会发现并不希望的的wifi设置界面在最上面!!!