1.Activity生命周期
生命周期有七个方法
onCreate() , onStart(), onResume() , onPause(), onStop(),onRestart(), onDestroy();
2.onStart()和onResume()/onPause()和onStop()的区别?
在这些方法中,onStart()方法处于可见但不处于前台,而onResume()处于可见且在前台,另外的两种方法和onStart和onResume()是相对应的,同理
3.Activity A启动另一个Activity B会回调哪些方法?如果启动的是一个Dialog呢?
1.在A启动B时,首先A会调用自己的onPause()方法,然后B调用onCreate()→onStart()→onResume()→A的onStop()方法
打开一个新Activity:
A的onPause() -->B 的Activity的onCreate()-->onStart()-->onResume()-->A的Activity的onStop()
2.启动的如果是对话框Dialog,则只会执行A的onPause()方法,而不会执行A的onStop()方法,这时候A只处于暂停状态还没有处于停止状态
A的Activity的onPause()-->B的onCreate()-->onStart()-->onResume()
4.onSaveInstanceState()方法?何时会调用?
这个方法在活动被回收的时候调用,用于保存活动的临时数据,在活动重建之后可以恢复数据
5.onSaveInstanceState()与onPause()的区别?
onSaveInstenceState()用于保存临时数据,而onPause()方法中用于保存持久化数据
6.配置改变时Activity的重建
在切换手机横竖屏时,Activity会被杀死重建,这个时候会用到我们上面讲的onSaveInstanceState()方法
会先调用onSaveInstanceState来保存切换时的数据,接着销毁当前的Activity,然后重新创建一个Activity,再调用onRestoreInstanceState恢复数据。
7.Activity的四种启动模式?
1.standard 标准模式
每当一个新的活动启动时,栈中都会创建一个新的实例,不管栈中是否存在此活动
2.singerTop 栈顶复用模式
启动活动时,如果发现活动在栈中且处于栈顶位置,则栈中不会创建新的实例,并回调onNewIntent(intent)方法。
3.singerTask 栈内复用模式
启动活动时如果活动在栈中存在,就不会重建,而是把此活动之前的栈顶活动全部出栈,让活动处于栈顶,如果不存在则创建新的实例
4.singerInstance 单实例模式
具有此模式的Activity只能单独位于一个任务栈中,且此任务栈中只有唯一一个实例。
8.如何启动其他应用的Activity?
Intent用于启动其他的活动,又分为显示启动和隐式启动,显示启动直接用活动名启动
隐式启动通过Manifest中的action和category信息去启动新的活动
网友评论