美文网首页Android技术知识
近期整理了 Android 中高级核心复习面试题(持续更新...

近期整理了 Android 中高级核心复习面试题(持续更新...

作者: 码农的书柜 | 来源:发表于2021-01-14 20:16 被阅读0次

    一、Android基础

    1. basic

    • Serializable和Parcelable区别

    一个简单,但效率低;

    一个高效,但使用麻烦。

    世事两难全呀。

    2. 组件

    2.1 Activity

    1)Activity lifecycle

    onCreate() 创建活动,做一些数据初始化操作

    onStart() 由不可见变为可见

    onResume() 可以与用户进行交互,位于栈顶

    onPause() 暂停,启动或恢复另一个活动时调用

    onStop() 停止,变为不可见

    onDestroy() 销毁

    onRestart() 由停止状态变为运行状态

    2) Activity的启动方式

    ①.standard模式

    a.Activity的默认启动模式

    b.每启动一个Activity就会在栈顶创建一个新的实例。例如:闹钟程序

    缺点:当Activity已经位于栈顶时,而再次启动Activity时还需要在创建一个新的实例,不能直接复用。

    ②.singleTop模式

    特点:该模式会判断要启动的Activity实例是否位于栈顶,如果位于栈顶直接复用,否则创建新的实例。 例如:浏览器的书签

    缺点:如果Activity并未处于栈顶位置,则可能还会创建多个实例。

    ③.singleTask模式

    特点:使Activity在整个应用程序中只有一个实例。每次启动Activity时系统首先检查栈中是否存在当前Activity实例,如果存在

    则直接复用,并把当前Activity之上所有实例全部出栈。例如:浏览器主界面

    ④.singleInstance模式

    特点:该模式的Activity会启动一个新的任务栈来管理Activity实例,并且该势力在整个系统中只有一个。无论从那个任务栈中启动该Activity,都会是该Activity所在的任务栈转移到前台,从而使Activity显示。主要作用是为了在不同程序中共享一个Activity

    3) onCreateMenuOption 在Activity哪个生命周期被调用到?

    onResume
    

    4)Activity & Window

    3. Binder机制

    这块内容好多。。

    先来个图看看,哈哈。

    系统结构图。

    4. Handler

    先放点图

    5. View

    1) View 事件传递

    Activity调用dispathTouchEvent()方法,把事件传递给Window;

    Window再将事件交给DecorView(DecorView是View的根布局);

    DecorView再传递给ViewGroup;

    Activity ——> Window ——> DecorView ——> ViewGroup——> View

    ViewRoot只是ViewTree的管理者,和View没有关系, 真正的根结点是DecorView。

    2)事件分发的主要有三个关键方法

    dispatchTouchEvent() 分发

    onInterceptTouchEvent() 拦截 ,只有ViewGroup独有此方法

    onTouchEvent() 处理触摸事件

    二、Android进阶

    1. app启动

    大神的图。

    开机启动过程:

    app启动过程:

    2. 网络库

    1) Okhttp和Retrofit

    拦截器使用什么设计模式?
    

    3. 内存优化

    • 第一点: 如果只是想避免OutOfMemory异常的发生,则可以使用软引用。 如果对于应用的性能更在意,想尽快回收一些占用内存比较大的对象,则可以使用弱引用。

    • 第二点: 可以根据对象是否经常使用来判断选择软引用还是弱引用。 如果该对象可能会经常使用的,就尽量用软引用。 如果该对象不被使用的可能性更大些,就可以用弱引用。

    4. ANR的原因

    5. 如何统计页面桢率,app流畅?

    https://www.jianshu.com/p/d126640eccb1
    

    6. 5.0以前,7.0,8.0的系统,安装app的速度比较

    7. app性能优化

    https://www.jianshu.com/p/b3b09fa29f65
    

    8. 内存泄露

    • Handler 引起的内存泄漏
    • 单例模式引起的内存泄漏
    • 非静态内部类创建静态实例引起的内存泄漏
    • 非静态匿名内部类引起的内存泄漏
    • 注册/反注册未成对使用引起的内存泄漏
    • 资源对象没有关闭引起的内存泄漏
    • 集合对象没有及时清理引起的内存泄漏

    三、设计模式

    1. 单例

    文章已经收录于我的【Github】项目,另外还整理了一份Android中高级面试复习核心知识点文档,想做参考的朋友可以去我的【Github】查阅。欢迎Star!

    Github

    相关文章

      网友评论

        本文标题:近期整理了 Android 中高级核心复习面试题(持续更新...

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