写点什么

Android 中高级核心复习面试题整理,备战年后金三银四!

用户头像
Android架构
关注
发布于: 17 小时前

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 的速度比较




《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


7. app 性能优化




8. 内存泄露




  • Handler 引起的内存泄漏

  • 单例模式引起的内存泄漏

  • 非静态内部类创建静态实例引起的内存泄漏

  • 非静态匿名内部类引起的内存泄漏

  • 注册/反注册未成对使用引起的内存泄漏

  • 资源对象没有关闭引起的内存泄漏

  • 集合对象没有及时清理引起的内存泄漏

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android 中高级核心复习面试题整理,备战年后金三银四!