展示FLAG_ACTIVITY_REORDER_TO_FRONT的应用
这个demo的画面启动顺序如下
ReorderOnLaunch ---> ReorderTwo ---> ReorderThree ---> ReorderFour
在画面ReorderFour中,再次启动ReorderTwo ,加了参数
Intent intent = new Intent(ReorderFour.this, ReorderTwo.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
能让ReorderTwo 不重新启动,而是将activity stack中的ReorderTwo 直接移动到最顶层
除了刚才的flag之外,常用的还有如下flag
FLAG_ACTIVITY_CLEAR_TOP
如果需要启动的Activity已经在activity stack中,则不重新启动一个这个Activity的实例,而是在这个Activity上方的所有Activity都将关闭,
然后将 Activity直接移动到stack最顶层
FLAG_ACTIVITY_NEW_TASK
启动一个新的task,一般从service中启动一个activity往往需要这个参数
如果需要可定制的activity生命周期管理,就需要自己实现一个stack manager。
大致的原理是定一个baseactivity,所有自己的activity继承base,
在base中,拦截oncreate方法,每次实例化activity时,向自定义的stack中放入新activity的引用
自定义的stack需要单实例模式