Activity生命周期:
onWindowFocusChanged():Activity窗口获得或失去焦点时被调用
onSaveInstanceState():(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,此方法会被调用;(2)在用户改变屏幕方向时,此方法会被调用;(3)在当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台时,此方法会被调用。
onRestoreInstanceState():(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,然后用户又回到了此Activity,此方法会被调用;(2)在用户改变屏幕方向时,重建的过程中,此方法会被调用。
Activity启动模式:
Standard:每次启动一个Activity都会又一次创建一个新的实例入栈,无论这个实例是否存在。
堆栈实例:A B C 三个Activity
由C启动A 堆栈信息变为 A B C A
SingleTop:须要创建的Activity已经处于栈顶时,此时会直接复用栈顶的Activity。不会再创建新的Activity;若须要创建的Activity不处于栈顶,此时会又一次创建一个新的Activity入栈,同Standard模式一样。
情况一:在C Activity中加入点击事件,须要跳转到还有一个同类型的C Activity,结果是直接复用栈顶的C Activity。
情况二:在C Activity中加入点击事件,须要跳转到还有一个A Activity。结果是创建一个新的Activity入栈。成为栈顶。
SingleTask:若须要创建的Activity已经处于栈中时,此时不会创建新的Activity,而是将存在栈中的Activity上面的其他Activity所有销毁,使它成为栈顶。
情况一:在C Activity中加入点击事件,须要跳转到还有一个同类型的C Activity。结果是直接用栈顶的C Activity。情况二:在C Activity中加入点击事件,须要跳转到还有一个A Activity。结果是将A Activity上面的B、C所有销毁,使A Activity成为栈顶。
SingleInstance:SingleInstance比較特殊,是全局单例模式,是一种加强的SingleTask模式。它除了具有它所有特性外,还加强了一点:具有此模式的Activity仅仅能单独位于一个任务栈中。
情况-:在C Activity中启动A Activity,会新建一个任务栈,将新创建A Activity实例加入到任务栈中,此时会存在两个任务栈中,旧的任务栈中存在A B C 三个Activity实例,新任务栈中存在一个A Activity实例