【Android面试知识点】Activity相关

7 篇文章 0 订阅
7 篇文章 0 订阅

Activity是Android的四大组件之一,也可以说是出镜率最高的一个类,里面的知识点可以说是非常多,也是面试官必问的,接下来我们就通过学习提问的方式,来学习源码,顺便看看可能有哪些在面试中可能问到,因为Activity的知识点太多,所以可能涵盖不全,还请见谅。

  • Activity的生命周期
    Activities在Android系统中是由一个叫做Activity 栈的来管理的,当一个新的Activity被启动的时候,它会被放在栈顶。
    Activity有四种状态

    1. 处于前台的时候,称为活跃状态Active
    2. 当前Activity处于可见状态,但是由不是前台,例如被dialog或者透明的Activity遮盖,这时候称为暂停paused
    3. 完全不可见状态,这时候系统会根据需要杀掉当前Activity,stop状态
    4. 当activity处于stoped或者paused状态的时候,系统有可能会丢弃该Activity

    具体的生命周期

    1. onCreate 初始化UI的方法
    2. onStart()
    3. onRestart
    4. onResume
    5. onPause一般在系统恢复前一个Activity的时候触发,在该状态的时候一般需要将消耗cpu的操作停止,例如动画、保存数据,这部分操作一定要快速,因为很有可能再次进入onResume或者彻底不见进入onStop
    6. onStop
    7. onDestory
  • onRestart是在onStop之后调用还是在onDestroy之后调用
    onStop

  • onResume阶段,是否Activity处于可见状态?
    不一定,有时候系统窗口,比如键盘锁会在Activity之前出现,一样会回调该方法不过可以通过onWindowFocusChanged(boolean)方法来判断当前activity是否已经可见。

  • onNewIntent是在什么时候触发?

    1. 当前Activity的LaunchMode设置为SingleTop
    2. 启动这个Activity的Intent,设置了android.content.Intent.FLAG_ACTIVITY_SINGLE_TOP
    3. 如果当前Activity处于栈顶,那么再次启动该Activity,则会触发onNewIntent
  • onPause一般做什么操作比较合适?为什么?
    一般在onPause的时候,会停止当前动画、保存当前Activity的一些状态,因为在onPause以后,系统有可能会根据系统内存情况,杀掉onPause状态的Activity,同时在onPause状态不要做耗时操作,因为只有在onPause执行完以后,其他的Activity才会被创建。

  • onUserLeaveHint()什么时候会触发?
    当是因为用户的缘故,Activity进入后台的时候,该方法会触发,例如用户按了home键,则该方法会被触发。但是当有电话需要接听的时候,该方法则不会触发。该方法会在onPause之前被触发,主要用于帮助Activity更好的管理状态通知。

  • onStop方法必然会被调用吗?为什么?
    不是,当内存不足的时候,Activity
    会从onPause直接进入onDestory

    1. 复写onPause方法,将数据保存在sd卡上,在onCreate的时候恢复,建议在该处保存数据
    2. 复写onSaveInstanceState(android.os.Bundle) ,将数据保存在bundle中,在onCreate(Bundle bundle)进行读取恢复。但是该部分回调不是每次都会触发,所以不如onPause更加稳定。
  • 屏幕从竖屏切换至横屏当前Activity的生命周期是
    如果没有在manifest中配置onConfiguration,则是从onResume->onPause->onStop->onDestory->onCreate

  • Activity的四种启动模式

    1. Standard
    2. SingleTop
    3. SingleInstance
    4. SingleTask

    前两个算一类,因为都会在启动Activity的时候新建一个activity,不同之处是SingleTop是只要在栈顶有该Activity则不用创建新的,后两个是不论如何情况都只会有一个activity,不同之处就是后者会单独创建一个task。

  • 你知道在一个Activity捕获back键有几种方式

    1. 复写onKeyDown和onKeyUp
    2. 复写onBackPressed
    3. 复写dispatchKeyEvent
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值