【Android】常见面试题(一)

持续更新

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生命周期图
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生命周期

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);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值