美文网首页
Android面试题总结 - Activity

Android面试题总结 - Activity

作者: s酸菜 | 来源:发表于2019-02-18 16:50 被阅读0次
    Activity的概念
    1.Activity - 与用户交互的接口
    2.Android系统是通过Activity栈的形式来管理Activity的
    
    activity任务栈.png
    Activity的4种形态:
    1.Active:Activity处于栈顶
    2.Paused:可见但不可交互
    3.Stopped:不可见
    4.Killed:系统回收掉
    
    Activity的生命周期
    activity的生命周期.png
    1. 以上为正常情况下activity的生命周期流程图。
    2. 下面总结异常情况下生命周期流程:
    3. 相比正常情况生命周期,异常终止情况下生命周期多了两个方法:` onSaveInstanceState(Bundle outState)` 、` onRestoreInstanceState(Bundle savedInstanceState)`。这两个方法在activity异常情况下,系统会自动调用前者来保存数据信息。当系统重新启动的时候,会调用后者将保存的数据信息通过bundle参数传递过来。
    4. ` onCreate(@Nullable Bundle savedInstanceState)` ` onRestoreInstanceState(Bundle savedInstanceState)`,两个方法参数都有bundle,二者选其一的话,推荐后者,后者中的bundle一定不为空,而前者里面的bundle有可能为空。
    

    总结:

    1.activity正常启动: onCreate - onStart - onResume
    2.点击back回退:     onPause - onStop - onDestroy
    3.打开新的activity: onPause - onStop
    4.activity异常:     onSaveInstanceState来保存数据
    5.activity重新创建: 调用onRestoreInstanceState来恢复数据
    
    Activity组件之间的通信

    activity与activity之间的通信:

    1. Intent/Bundle
    2. 类静态变量
    3. 全局变量
    

    activity与fragment之间的通信:

    一:activity将数据传递给fragment:
    1.bundle
    2.直接在activity中定义方法
    二:fragment将数据传递给activity:
    1.接口回调:
        1.1 在fragment中定义一个内部回调接口
        1.2 fragment的方法onAttach()中判断是否实现接口
        1.3 调用onDetach方法,这个时候要把传递进来的activity对象释放掉
    
    

    activity与service之间的通信:

    1. 绑定服务,利用ServiceConnection接口传递数据
    2. 简单通信,利用Intent进行传值
    3. 定义一个callback接口来监听服务中的进程的变化
    
    Activity的四种启动模式
    1.standard:
        1.1 在不指定启动模式的前提下,系统默认使用该模式启动activity。
        1.2 每次启动activity都会重新创建一个新的实例。
        1.3 重新创建的activity会依次调用onCreate(),onStart(),onResume()方法。
    2.singleTop:
        2.1 当前栈中已经有该activity的实例并且该实例位于栈顶时,复用该实例。
        2.2 当前栈中已经有该activity的实例但是该实例不在栈顶时,创建新实例,不复用。
        2.3 当前栈中不存在该activity的实例时,创建新实例,不复用。
        2.4 应用场景:IM对话框、新闻客户端推送。
    3.singleTask:
        3.1 首先会根据taskAffinity(任务相关性)去寻找当前是否存在一个对应名字的任务栈。
        3.2 如果不存在,则会创建一个新的task,并创建新的activity实例,加入任务栈中。
        3.3 如果存在,则得到该任务栈,查找任务栈中是否存在该activity实例,存在,弹出该activity以上的所有实例。不存在,创建新的activity实例加入任务栈。
        3.4 应用场景:应用的主界面。
    4.singleInstance:
        4.1 以singleInstance模式启动的activity具有全局唯一性。
        4.2 如果在启动这样的activity时,已经存在了一个实例,会把所在的任务调度到前台,复用该实例。
        4.3 以singleInstace模式启动的activity实例具有独占性,独自占用一个任务栈。
        4.4 应用场景:呼叫来电。
    

    相关文章

      网友评论

          本文标题:Android面试题总结 - Activity

          本文链接:https://www.haomeiwen.com/subject/mjfzeqtx.html