2021年3月15日面试总结

257 阅读4分钟

Activity 生命周期 :onCreate  onstart  onResume  onPause  onStop onDestroy 

                               onSaveInstanceState    onRestoreInstanceState 异常被回收,进行重                                 建

                               onNewIntent   restart  

                              后台activity 销毁重建的过程:

                              横竖屏输入法弹出生命周期  activity 销毁与重建的过程。

第一、onCreate   已创建状态 ,里面 做 视图的初始化,ViewModel 和View 的绑定,实例化作用域。可以接收bundle 值 进行数据的恢复。 执行顺序  bundle 里面获取数据,setContentView , 为view 绑定。

第二、onStart  已开始状态  和 onStop对应,onStart是很快的完成,不能做太多的耗时操作。 此状态回调 对用户可见,为进入前台支持互动做准备 。初始化 维护界面的代码。

onStop 调用时不对用户可见。应该释放掉 或者调整对用户不可见的无用资源。比如:可以暂停动画,可以切换精准位置 为 粗略位置。确保与界面相关的工作继续运行。多窗口模式下查看Activity。 执行CPU相对密集的关闭操作。 可以进行保存。

第三 、 onResume 和 onPause 对应。

            onResume 是 已恢复状态。可以与用户交互。多窗口模式下。可以重新初始化 onPause 释放掉的组件。

             onPause 释放系统资源,传感器。onPause 方法并不意味Activity 离开已暂停状态。相反会保持这个状态。 是进入stop 还是进入 onReusme .

第四 、 onDesotry的 调用场景, 调用finish, back 键盘,配置发生改变(暂时销毁并且重建)。释放所有的资源。通过isFinish 来判断 是生命周期的最后一步。还是因为配置改变 引起的销毁重建 isFinish () 是false 的。

第五、 super.onCreate() ,可以 在第一行写。调用父类的。

第七、onSavedInstanceState ()来保存简单轻量的界面状态。系统进入后台。

        在Android P  也就是android  9  以及之后, 调用是在 onStop 之后。

        在Android 9 之前,这个是在 onStop 调用之前,但是 和onPause 没有必然的联系。

         onSaveInstanceState 调用场景比较多。除了点击返回键 或者 调用finish 正常销毁之外,其他有可能恢复的场景对会调用。

        onRestoreInstance 调用时机。是在 onStart 之后,用于恢复 onStart  需要初始化完成之后,恢复的数据比较方便,当然恢复数据也可以在 onCreate 里面进行。但是区分一下比较好。 需要对bundle 进行非空判断,可以判断isFinish() 

第八、 打印 Activity 生命周期的时候,可以 在 baseActivity 的 tag重新赋值为 this.getClass().getSimpleName() 方法。

第九、Activity 的启动模式 和任务堆栈。

         任务是Activity 的集合, activity 的容器就是 返回堆栈。

        系统按窗口来管理 任务和任务组

       返回堆栈按照后进先出的对象结构运作。

      定义启动模式。

     SingleTask ,系统会创建新的任务,并实例化根Activity。 但是如果另外的任务已经有该Actiivyt 的实例,则会调用onNewIntent() 方法 把该实例 推向栈顶,并把 之前的acitity 推出栈外。

     SingleInstance  栈里面只有一个Activity。

     如果启动模式 是 ClearTop And  NewTask ,  xml 里面配置的standard ,会移除原来的创建新的, 说明java 启动的优先级 高于 xml 的优先级。

       Binder事务缓冲区的大小固定有限,目前为1M,由进程中正在处理的事务共享。我们保存的数据建议在 50k以下。

2   Fragment 生命周期:onCreate  onCreateView  onActivityCreate 

                                 onstart  onResume onPause onStop onDestory 

                                  onDesoryView  onDestroyActivity

                                   Fragment 回退栈机制的处理 数据的传递。回调

       Fragment 允许将界面划分为离散的区块,从而将模块化和可重用性引入到Activity 的界面。用户可以处于started 以及更高级别的状态,动态的对Fragment进行操作。可以动态的根据屏幕尺寸来添加和删除区块。

       Fragment 就是在宿主界面获取的Fragment  管理子Fragment,  获取的ParentFragmentManager 管理的是自己, 获取的childFragmentManager 是其他类的。

         

3   String   StringBuilder 线程不安全的。  StringBuffer 线程安全带Syntronize 关键字

     存储是以char[] 的形式来存储数据,所以不会频繁的创建对象。

    String 每次 操作 对会 使用 newString 来创建对象。

4  静态内部类 和 反射的使用? ???

5  Activity 启动模式和用途 

6  Android 垃圾回收算法

7  自定义View的原理和流程。

8   设计模式以及用户