目录
Activity
1. 说下 Activity 的生命周期?
参考回答:
在 Activity 的生命周期涉及到七大方法,分别是:
onCreate() 表示 Activity 正在创建,常做初始化工作,如 setContentView 界面资源、初始化数据
onStart() 表示 Activity 正在启动,这时 Activity 可见但不在前台,无法和用户交互
onResume() 表示 Activity 获得焦点,此时 Activity 可见且在前台并开始活动
onPause() 表示 Activity 正在停止,可做 数据存储、停止动画等操作
onStop() 表示 Activity 即将停止,可做稍微重量级回收工作,如取消网络连接、注销广播接收器等
onDestroy() 表示 Activity 即将销毁,常做回收工作、资源释放
另外,当 Activity 由后台切换到前台,由不可见到可见时会调用 onRestart(),表示 Activity 重新启动
2. 说下 Activity 的四种启动模式?
参考回答:
standard 标准模式:每次启动一个 Activity 就会创建一个新的实例
singleTop 栈顶复用模式:如果新 Activity 已经位于任务栈的栈顶,就不会重新创建,并回调
onNewIntent(intent) 方法
singleTask 栈内复用模式:只要该 Activity 在一个任务栈中存在,都不会重新创建,并回调
onNewIntent(intent) 方法。如果不存在,系统会先寻找是否存在需要的栈,如果不存在该栈,就创建一个任务栈,并把该 Activity 放进去;如果存在,就会创建到已经存在的栈中
singleInstance 单实例模式:具有此模式的Activity只能单独位于一个任务栈中,且此任务栈中只有唯一一个实例
3. onStart()和onResume()/onPause()和onStop()的区别?
参考回答:
onStart() 与 onStop() 是从 Activity 是否可见这个角度调用的,onResume() 和 onPause()是从 Activity 是否显示在前台这个角度来回调的,在实际使用没其他明显区别。
4. Activity A启动另一个Activity B会回调哪些方法?如果Activity B是完全透明呢?如果启动的是一个Dialog呢?
参考回答:
Activity A 启动另一个 Activity B 会回调的方法:Activity A 的 onPause() --> Activity B 的onCreate()–>onStart()–>onResume()–>Activity A的 onStop();如果Activity B是完全透明的,则最后不会调用 Activity A 的 onStop();如果是对话框 Activity,同后种情况。
5. 谈谈onSaveInstanceState()方法?何时会调用?
参考回答:
当非人为终止 Activity 时,比如系统配置发生改变时导致 Activity 被杀死并重新创建、资源内存不足导致低优先级的 Activity 被杀死,会调用 onSavaInstanceState() 来保存状态。该方法调用在 onStop 之前,但和 onPause 没有时序关系。
6. onSaveInstanceState()与onPause()的区别?
参考回答:
onSaveInstanceState() 适用于对临时性状态的保存,而 onPause() 适用于对数据的持久化保存。
7. 如何避免配置改变时 Activity 重建?