edit README.md

This commit is contained in:
linglongxin24
2016-11-18 19:12:14 +08:00
parent e781f7db74
commit 9cac1e1ba9

View File

@@ -1,6 +1,6 @@
#深入ActivityActivity启动模式LaunchMode完全解析
>在平时的开发中我们可能会了解到Activity的任务栈还有Activity的启动模式。那么Activity的启动模式都分别是怎么样的呢如果设置了这些启动模式对任务栈有事么影响
,还有就是这么启动模式在实际的开发中有么应用呢这里用图例和demo来分析一下Activity的启动模式。
,还有就是这么启动模式在实际的开发中有么应用呢这里用图例和demo来分析一下Activity的启动模式。
Demo图
![Demo图](https://github.com/linglongxin24/ActivityLaunchMode/blob/master/screenshorts/device.png?raw=true)
@@ -8,12 +8,15 @@ Demo图
#1.Standard标准启动模式
Activity的默认模式所有的Activity元素遵循先进后出的进栈出栈的特性这种的比较简单
>启动顺序A->B->C
>回退顺序C->B->A.
![Standard](https://github.com/linglongxin24/ActivityLaunchMode/blob/master/screenshorts/standard.png?raw=true)
#2.SingleTop:栈顶复用模式
栈顶复用模式如果想要打开的activity在任务栈的栈顶已经存在就不会创重新建新的实例而是调用该Activity的 onNewIntent() 方法。避免栈顶的activity被重复的创建。
>例如A.B启动模式为StandardC启动模式为SingleTop
>启动顺序A->B->C—>C
>回退顺序C->B->A.而不是C->C->B->A
![SingleTop](https://github.com/linglongxin24/ActivityLaunchMode/blob/master/screenshorts/singleTop.png?raw=true)
@@ -28,7 +31,9 @@ Activity的默认模式所有的Activity元素遵循先进后出的进栈出
如果想要启动的Activity在当前栈内启动之后该activity只会在任务栈里面存在一个实例。如果要再次打开这个activity在任务栈里面如果已经存在就不会创建新的activity
而是复用栈内的这个已经存在的activity调用改Activity的 onNewIntent() 方法并且清空这个activity任务栈上面所有的activity。
>例如A.C.D启动模式为StandardB启动模式为SingleTask
>启动顺序A->B->C—>D—>B
>回退顺序B->A.而不是B—>D->C->B->A
![SingleTop](https://github.com/linglongxin24/ActivityLaunchMode/blob/master/screenshorts/singleTask.png?raw=true)
@@ -40,7 +45,9 @@ Activity的默认模式所有的Activity元素遵循先进后出的进栈出
他会运行在自己单独的的任务栈里面,并且这个单独的任务栈里面只会存在着一个实例。而且这个单独的任务栈会在最底层。
应用场景系统的发短信打电话来电浏览器等。这种模式在平时很少去使用一般在Launcher中可能会用到。
>例如A.C启动模式为StandardB启动模式为SingleInstance
>启动顺序A->B->C注意此时产生了两个任务栈B产生了一个新的任务栈并处于其他任务栈的下面。
>回退顺序C->A->B.而不是C->B->A
![SingleTop](https://github.com/linglongxin24/ActivityLaunchMode/blob/master/screenshorts/singleInstance.png?raw=true)