activity的android文档是:https://developer.android.google.cn/reference/android/app/Activity
Activity是Android提供的四大组件之一,是进行Android开发必不可少的组件.Activity是一个界面的载体,Activity则可以由各种控件组成.然而Activity也并不是那么简单.查看Activity类的源码我们就可以看到,这个类大概有六千多行代码,说明Android对Activity的处理是相当复杂的.
用户打开一个Activity,生命周期是oncreate()->onstart()->onResume()
按home键把actitivty放到后台,那么会执行onPause()->onStop()
如果这个时候activity再放到前台,那么会执行onRestart()->onStart()->onResume()
如果按硬件back键,执行onPause()->onStop()->onDestroy()
在activity上弹出dialog不会执行onPause()-onStop()
当你从A1界面跳转到A2界面时,生命周期的变化如下:
onCreate(A1)—>onStart(A1)—>onResume(A1)—>onPause(A1)—>onCreate(A2)—>onStart(A2)—>onResume(A2)—>onStop(A1);
此时如果在A2界面按下返回键,生命周期会的变化如下:
onPause(A2)—>onRestart(A1)—>onStart(A1)—>onResume(A1)—>onStop(A2)—onDestory(A2);
注:如果A2界面是一个透明主题的话,那么A1不会调用onStop方法
有一个常见的启动模式的面试题:SingleTop和SingleTask各自的行为:
这两个都是android的activity的加载模式
singleTop,当跳转对象位于栈顶的activity,那程序将不会生成一个新的activity实例,而是直接跳到现存于栈顶的那个activity实例
singletask只是会创建一个实例额,无论跳转对象是不是位于栈顶,程序都不会生成一个实例,如果该实例不在栈顶,将清空这个实例到栈顶的activity
另外还有两种加载模式
Standard:标准的启动模式,如果需要启动一个activity就会创建该activity的实例。也是activity的默认启动模式。
singleInstance:如果使用singleInstance启动模式的activity在启动的时候会复用已经存在的activity实例。不管这个activity的实例是位于哪一个应用当中,都会共享已经启动的activity的实例对象。使用了singlestance的启动模式的activity会单独的开启一个共享栈,这个栈中只存在当前的activity实例对象。
共同学习,写下你的评论
评论加载中...
作者其他优质文章