转载请注明出处
Activity有四种启动模式,这次重点描述的是singleInstance
singleInstance会启动一个新的栈结构,而且不允许别的Activity实例进入此栈结构。
首先定义三个Activity的启动模式
MainActivity------launchMode="standard"
SecondActivity-----launchMode="singleInstance"
ThirdActivity------launchMode="standard"
例子1:
由MainActivity进入SecondActivity,SecondActivity入新的栈,由SecondActivity进入ThirdActivity。然后按下返回键,打印日志显示:
- ThirdActivity====onpause—-onstop—-ondestry
- MainActivity====onrestart—-onstart—-onresume
由于SecondActivity入新的栈,而且不允许别的Activity实例进入此栈,所以从ThirdActivity返回时返回到MainActivity。
再按返回键:
- MainActivity====onpause—-onstop—-ondestry
- SecondActivity====onrestart—-onstart—-onresume
MainActivity消失,进入SecondActivity,进入新的栈。
再按返回键:
- SecondActivity=====onpause—onstop—ondestry
例子2:
由MainActivity进入SecondActivity,再由SecondActivity进入MainActivity,然后查看打印的日志:
- SecondActivity===onpause—-onstop
- MainActivity===oncreate—-onstart—-onresume
由MainActivity进入SecondActivity,SecondActivity入新的栈2,再进入MainActivity时,生成新的MainActivity实例。
按返回键:
- MainActivity====onpause—onstop—-ondestry
- MainActivity===onrestart—-onstart—-onresume
栈1里有两个MainActivity,返回finish掉一个。
再按返回:
- MainActivity====onpause—onstop—-ondestry
- SecondActivity====onrestart—onstart—onresume
栈1再返回finish掉栈底的MainActivity,栈1清空了,然后进入栈2.
再按返回键:
- SecondActivity=====onpause—onstop—ondestry