Android面试问题总结(1)

Android面试技术点总结

Activity

1Q: Activity的生命周期

A: 一个Activity在启动时依次调用onCreate、onStart、onResume方法,其中onResume方法代表Activity获得了屏幕焦点,在一个Activity销毁时会依次调用onPaus、onStop、onDestory方法,其中onPause方法代表Activity失去焦点,在屏幕上不可见。

2Q: Activity A启动另一个Activity B会回调哪些方法?如果Activity B是完全透明呢?如果启动的是一个对话框Activity呢?

A: A.onPause -> B.onCreate -> B.onStart -> B.onResume -> A.onStop
如果B完全透明或者是一个对话框Activity,则不会调用最后的A.onStop

3Q: 如何避免配置改变时Activity重建?

A: 在manifest中加入如下语句

android:configChanges="orientation|screenSize"

这样就不会在屏幕旋转时再次创建Activity,指定configChanges属性,重写onConfigurationChanged方法即可。

4Q: 优先级低的Activity在内存不足被回收后怎样做可以恢复到销毁前状态?

A: 优先级低的Activity在内存不足被回收后重新打开会引发Activity重建。Activity被重新创建时会调用onRestoreInstanceState(该方法在onStart之后),并将onSavaInstanceState保存的Bundle对象作为参数传到onRestoreInstanceState与onCreate方法。因此可通过onRestoreInstanceState(Bundle savedInstanceState)和onCreate((Bundle savedInstanceState)判断Activity是否被重建,并取出数据进行恢复。但需要注意的是,在onCreate取出数据时一定要先判断savedInstanceState是否为空。

5Q: Activity的四种启动模式

  1. standard模式,标准模式,每次Activity创建都会产生一个实例
  2. singleTop模式,当创建一个Activity时,检查栈顶的Activity是否是目标Activity,如果是,则返回栈顶Activity
  3. singleTask模式,当创建一个Activity时,检查栈中是否已经有一个目标Activity实例,如果有的话,则实例上所有对象全部出栈,将目标Activity移至栈顶
  4. singleInstance模式,具有此模式的Activity只能单独位于一个任务栈中,且此任务栈中只有唯一一个实例

6Q: onNewIntent()调用时机?

A: 在启动模式为SingleTask或者是SingleTop模式会调用onNewIntent方法,当不需要新建一个实例的话,就会调用。

7Q: 如何调用其他应用的Activity

A:使用隐式Intent与IntentFilter,匹配具体的Action、Category、Data。一个Activity可以有多个intent-filter,一个intent只要成功匹配任意一组intent-filter,就可以启动该Activity

8Q: Action、Category的匹配规则

A: 一个Activity可以设置多个Action,但只要有匹配一个Action就会唤醒Activity。一个Activity同样可以设置多个category,但需要全部匹配到才会唤醒Activity

9Q: Activity的启动过程

见博客

Fragment

1Q: Fragment的生命周期

A: onAttach()->onCreate()-> onCreateView()->onActivityCreated()->onStart()->onResume()->onPause()->onStop()->onDestroyView()->onDestroy()->onDetach()
其中和Activity有不少名称相同作用相似的方法,而不同的方法有:

  1. onAttach():当Fragment和Activity建立关联时调用
  2. onCreateView():当Fragment创建视图时调用
  3. onActivityCreated():当与Fragment相关联的Activity完成onCreate()之后调用
  4. onDestroyView():在Fragment中的布局被移除时调用
  5. onDetach():当Fragment和Activity解除关联时调用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值