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

本文探讨了Serializable和Parcelable在Android中的区别,涉及Activity的生命周期、启动模式、onCreateMenuOption调用时机,以及Binder机制、Handler和View事件传递。同时提到了Android进阶内容,如app启动过程,以及对学习材料和编程建议的分享。
摘要由CSDN通过智能技术生成
  • 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启动过程:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

尾声

评论里面有些同学有疑问关于如何学习material design控件,我的建议是去GitHub搜,有很多同行给的例子,这些栗子足够入门。

有朋友说要是动真格的话,需要NDK以及JVM等的知识,首现**NDK并不是神秘的东西,**你跟着官方的步骤走一遍就知道什么回事了,无非就是一些代码格式以及原生/JAVA内存交互,进阶一点的有原生/JAVA线程交互,线程交互确实有点蛋疼,但平常避免用就好了,再说对于初学者来说关心NDK干嘛,据鄙人以前的经历,只在音视频通信和一个嵌入式信号处理(离线)的两个项目中用过,嵌入式信号处理是JAVA->NDK->.SO->MATLAB这样调用的我原来MATLAB的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的SO包的。
至于JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究JVM的人来做,不如省省心有空看看计算机系统,编译原理。

一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。
初学者,一句话,多练。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

看看计算机系统,编译原理。**

一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。
初学者,一句话,多练。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 25
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值