持续更新
1.Activity生命周期
1.1 onCreate();
1.2 onStart();
1.3 onResume();
1.4 onPause();
1.5 onStop();
1.6 onRestart();
1.7 onDestory().
注:
1.启动Activity:先调用onCreate()
,然后调用onStart()
,最后调用onResume()
,Activity进入运行状态;
2.当前Activity被覆盖或锁屏:先调用onPause()
,然后暂停当前Activity的执行状态;
3.解除Activity覆盖或解锁时:先调用onResume()
,然后再次进入运行状态;
4.跳转到新的Activity界面或按Home键回到主屏:应用进入后台,系统会先调用onPause()
,然后调用onStop()
,转入停滞状态;
5.返回到该Activity:先调用onRestart()
,然后调用onStart()
,最后调用onResume()
,重新进入到运行状态;
6.在第1.2/1.4步骤情况下,当前Activity被系统kill,用户操作退回到当前Activity:调用onCreate()
->onStart()
->onResume()
,进入运行状态;
7.用户退出当前Activity:先调用onPause()
,然后调用onStop()
,最后调用onDestory()
,结束当前Activity的运行状态.
2.Activity启动模式有哪些?
2.1 standard(默认的启动模式,每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈);
2.2 singleTop(如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例);
2.3 singleTask(如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都出栈);
2.4 singleInstance(如果应用1的任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两应用共享该Activity实例).
启动模式:启动模式简单地说就是Activity启动时的策略,在
AndroidManifest.xml
中的标签的android:launchMode
属性设置.
任务栈:每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序.
3.Fragment生命周期?与Activity生命周期有何不同?
3.1 Fragment生命周期图
3.2 Fragment生命周期与Activity的对应关系
4.Fragment之间有哪些数据传递的方式?
4.1 通过Bundle传值(只有重新初始化时才能给它数据);
4.2 通过共同的Activity传递;
4.3 通过回调进行值传递;
4.4 存储数据到内存中进行共享。
5.什么是Intent?Intent如何进行匹配?Intent显示/隐式的特点、区别、适用范围?
5.1 什么是Intent
Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件。
5.2 Intent如何进行匹配?
Intent的解析机制主要是通过查找已经注册在AndroidManifest.xml
中的所有IntentFilter
以及其中定义的Intent,最终找到匹配的Intent。
5.3 Intent显示/隐式的特点、区别、适用范围
- 特点
- 显示Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,去调用Intent.setComponent()、Intent.setClassName()或Intent.setClass()方法 或者在new Intent(A.this,B.class)指明需要激活的组件 。
- 隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下。
- 区别
- 显式Intent:显式意图明确指定了要激活的组件是哪个组件。
- 隐式Intent:隐式Intent则没有指明要激活要激活的组件,Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。
- 适用范围
- 显示Intent:一般是在相同的应用程序内部实现的。
- 隐式Intent:一般是用于在不同应用程序之间。
6.Service生命周期
7.BroadcastReceiver的作用、注册方式
7.1 作用:用于接收来自系统和应用中的广播。
7.2 注册方式
7.2.1 静态注册:在AndroidManifest.xml文件中进行配置,如:
<receiver android:name=".TestReceiver">
<intent-filter>
<action android:name="android.intent.action.TEST_BROADCAST"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
7.2.2 动态注册:动态注册需要在代码中动态的指定广播地址并注册,如:
TestReceiver receiver = new TestReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.TEST_BROADCAST");
registerReceiver(receiver, filter);