android开发面试!一次关于JVM的面试经历,在线面试指南

android开发面试!一次关于JVM的面试经历,在线面试指南,第1张

概述最近有好多大学生和我来说想入门Android,所以写下这篇文章来给大家一个意见。既然大家已决定学Android,相信你对Android已有些了解,知道应该学习什么语言,这里我就不细说了,Android首先要学的是Javase,也就是JAVA基础。下面总结面四点,来给大家分析一下。启动模式要准确的测量A

@H_301_5@

最近有好多大学生和我来说想入门AndroID,所以写下这篇文章来给大家一个意见。

既然大家已决定学AndroID,相信你对AndroID已有些了解,知道应该学习什么语言,这里我就不细说了,AndroID首先要学的是Java se,也就是JAVA基础。下面总结面四点,来给大家分析一下。

启动模式

要准确的测量APP的启动时间,首先我们要了解APP整个启动过程。 启动过程,一般可以分为以下三类:

@H_301_5@

爱奇艺AndroID客户端启动优化与分析

从上图可以看出,启动过程中,Cold的模式下,生命周期中做的事情最多,启动的时间最长,因此,我们以冷启动来衡量APP启动时间。启动过程中,如何判断哪些生命周期影响启动速度呢?

启动过程

我们知道,APP的启动和运行,就是linux系统创建进程和组件对象,并在UI线程中处理组件消息的过程。

启动过程图:

@H_301_5@

App的启动过程,可以划分为三个阶段:

3.1 创建进程

当APP启动时,如果当前app的进程不存在,便会创建新的进程;App主进程启动后,如果启动某个组件,并且该组件设置了androID:process属性,组件所运行的进程不存在,也会创建新的进程。

需要注意的是,如果在启动阶段,初始化的组件中,包含了多个进程,便会创建多次进程,BindApplication *** 作也会重复执行多次

3.2 创建UI线程及Handler

进程创建后,会通过反射,执行ActivityThread入口函数,创建Handler,并在当前线程中prepareMainLooper,并在Handler中接收组件的消息,我们来看一下Handler中处理的消息:

LAUNCH_ACTIVITY,启动,执行ActivityRESUME_ACTIVITY,恢复ActivityBIND_APPliCATION,启动appBIND_SERVICE,Service创建, onBindLOW_MEMORY,内存不足,回收后台程序

sMainThreadHandler中,处理的消息很多,这里只罗列了,可能在启动阶段可能会执行的 *** 作, 这些 *** 作都是运行在Main Thread中,对启动而言,属于阻塞性的。

Activity生命周期,自然需要在启动阶段执行,但,对于Service的创建,Trim_memory回调,广播接收等 *** 作,就需要重点考虑,其 *** 作耗时性。

3.3 Activity运行及绘制

前两个过程,创建进程和UI线程及Handler,都是由系统决定的,对APP开发者而言,并不能控制其执行时间,在本阶段,执行BindApplication,和Acitivity生命周期,都是可以由开发者自定义。

Activity执行到onResume之后,会执行至VIEwRootImpl,执行两次performTraversals,第二次traversal *** 作中,会执行performDraw *** 作,同时通知RenderThread线程执行绘制.

从启动的三个阶段,我们可以看出,启动启动时间的长短,决定因素在于,主线程中所做事情消耗的时间的多少,所以,我们的优化工作主要集中在,排查主线程中耗时性的工作,并进行合理的优化。AndroID手机,系统的资源是有限的,过多的异步线程,会抢占cpu,导致主线程执行时间片间隔增大。同样的,内存消耗状态,GC频率,也会影响启动的时间

学习分享,共勉

AndroID高级架构师进阶之路

题外话,我在阿里工作多年,深知技术改革和创新的方向,AndroID开发以其美观、快速、高效、开放等优势迅速俘获人心,但很多AndroID兴趣爱好者所需的进阶学习资料确实不太系统,完整。今天我把我搜集和整理的这份学习资料分享给有需要的人,若有关AndroID学习进阶可以与我在AndroID终极开发交流群一起讨论交流。 点击这里前往我的腾讯文档领取资料 的同时,还可以加入一个好的学习交流圈,何乐而不为呢?加入我们和我们一起吧!!

AndroID进阶知识体系学习脑图

@H_301_5@

AndroID进阶高级工程师学习全套手册

@H_301_5@

对标AndroID阿里P7,年薪50w+学习视频

@H_301_5@

大厂内部AndroID高频面试题,以及面试经历

[外链图片转存中…(img-xWFohqIc-1615458072168)]

大厂内部AndroID高频面试题,以及面试经历

@H_301_5@

总结

以上是内存溢出为你收集整理的android开发面试!一次关于JVM的面试经历,在线面试指南全部内容,希望文章能够帮你解决android开发面试!一次关于JVM的面试经历,在线面试指南所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1035907.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存