十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
自定义View的最基本的三个方法分别是:onMeasure(),onLayout()、onDraw();View在Activity中显示出来,要经历测量、布局、绘制三个步骤,分别对应三个动作:measure、layout和draw。
创新互联公司专注于宽城网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供宽城营销型网站建设,宽城网站制作、宽城网页设计、宽城网站官网定制、小程序定制开发服务,打造宽城网络公司原创品牌,更为您提供宽城网站排名全网营销落地服务。
视图View主要分为两类
系统自带的View可以在xml中配置属性,对于写的好的自定义View同样可以在xml中配置属性,为了使自定义的View的属性可以在xml中配置,需要以下4个步骤:
1、通过declare-styleable为自定义View添加属性
2、在xml中为相应的属性声明属性值
3、在运行时(一般为构造函数)获取属性值
4、将获取到的属性值应用到View
Android的坐标系定义为:
测量规格,封装了父容器对View的布局上的限制,内部提供了宽高的信息(SpecMode、SpecSize),SpecSize是指在某种SpecMode下的参考尺寸,其中SpecMode有如下三种:
通过将SpecMode和SpecSize 打包成一个int值可以避免过多的对象内存分配 ,为了方便操作,其提供了打包/解包方法。
MeasureSpec值到底是如何计算得来的呢?
子View的MeasureSpec值是根据子View的布局参数(LayoutParams)和父容器的MeasureSpec值计算得来的,具体计算逻辑封装在getChildMeasureSpec()里
官方解释:用于管理Activity和Fragment的生命周期
其实Lifecycles的功能就是使业务组件能够感知Activity和Fragment的生命周期。
我经历过这么多年的摸爬滚打,面试过也被面试过。现总结与归纳Android开发相关面试题:
1、Activity启动模式有哪些,分别有什么不同?
2、Service启动模式有哪些,对应的生命周期?IntentService呢?
3、ContentProvider的作用,是否支持多线程和多进程
4、Broadcast的注册方式,对应的生命周期是什么,有序和无序那种可以中断广播?
5、AsyncTask的作用,如何使用(包括有哪些方法,能说出同步异步,能说出不同Android版本下的区别加分)
6、有哪些异步的方式?
7、Handler机制
8、Dialog的使用及其生命周期
9、Activity的生命周期,能否改?
10、Fragment的生命周期,能否改?
11、Activity和Fragment如何通信
12、View的绘制机制
13、View的事件传递机制
14、如何监听手势
15、ImageView设置图片显示有哪几种模式,有什么区别?
16、有哪些存储方式
17、SharedPreferences是否支持多进程、多线程
别看以上常问的是入门级的,但是有两三年开发经验能回答圆满的人不多。
1、如何理解Activity的任务亲和性
2、如何让Service为单独的进程
3、IntentService的实现原理
4、LocalBroadcast的作用,实现原理,相对于Broadcast的优势在哪,劣势在哪
5、Handler的缺点,会不会造成内存泄漏,有则如何解决
6、Fragment与Activity的区别和联系
7、Fragment如何缓存布局
8、Fragment与ViewPager的搭配使用,有没有问题重叠问题,怎么解决
9、同时提供侧滑和上下滑动,如何解决事件传播问题
10、是否使用过Design包
11、嵌套滑动理解
12、behavior的原理
13、对设计模式有什么看法,经常使用的有哪些?
中级的稍微偏底层一些,这个主要考察平时是否关注而不是一味地怼业务需求
1、Activity的启动过程
2、Service创建为单独进程会有哪些问题?
3、简述AIDL的构建过程
4、IPC机制有哪些?
5、android多进程通信方式,内部原理
6、App启动的入口在哪?
7、LRU缓存算法
8、Bitmap的有哪几种压缩算法,有啥区别?
9、图片在手机本地存储大小和在内存大小是否一致,为什么,Android默认像素一般占几个字节?
10、第三方框架的熟练程度,如:
11、SharedPreference内部实现原理
12、模块化、插件话、组件化等分别有什么区别,对用有什么好处
13、说说MV * 模式,并画出做过项目的架构图
14、对跨平台方案有哪些了解,使用过哪些? 比如RN
15、对大前端有什么看法,了解多少?使用过什么?
16、对其他语言的了解,kotlin,python、php、c++等
17、兴趣爱好是什么?对未来有什么规划?
目前是一些经常会被问到的,当然只是列举了Android 开发方向的,Java的一些还没列举,比如异常、网络、多线程、JCF等等
以上问题的答案在下面都有详细解答,我们不仅整理了这些资料,而且还有一份长达"635页"的Android资料汇总:
包括:底层原理+项目实战+面试专题
虽说Android早已不像过去那般火爆,但各大厂对于中高级开发者仍旧是求贤若渴,想要获取更丰厚的薪资,打铁还得自身硬。对于框架、源码、原理、项目实操经验,都必须有足够的知识储备,才可以在面试中击败面试官。但是由于网上的资料鱼龙混杂,也不成体系,很多人在自我提升的过程中都头疼不已。 这里就给大家分享一份字节大佬整理的《Android中高级面试题汇总(2022)》,帮助大家系统的梳理中高级Android知识!里面包含了所有Android面试的知识点,刷完进大厂妥妥的 !
(含:静态内部类和非静态内部类的比较,多态的理解与应用, java方法的多态性理解,java中接口和继承的区别,线程池的好处,详解,单例,线程池的优点及其原理,线程池的优点,为什么不推荐通过Executors直接创建线程池,创建线程或线程池时请指定有意义的线程名称,方便出错时回溯,深入理解ReentrantLock与Condition,Java多线程:线程间通信之Lock,Synchronized 关键字原理,ReentrantLock原理,HashMap中的Hash冲突解决和扩容机制, JVM常见面试题, JVM内存结构,类加载机制/双亲委托…)
(含:Activity知识点, Fragment知识点, Service知识点, Intent知识点…)
(含:屏幕适配,主要控件优化,事件分发与嵌套滚动…)
(含:MVP架构设计,组件化架构…)
(含:启动优化,内存优化,绘制优化,安装包优化…)
(含:开源库源码分析,Glide源码分析,OkHttp源码分析,Retrofit源码分析,RxJava源码分析…)
(含:开源文档,面试合集…)
Describe the APK format.
The APK file is compressed the AndroidManifest.xml file, application code (.dex files), resource files, and other files. A project is compiled into a single .apk file.
What is an action?
A description of something that an Intent sender desires.
What is activity?
A single screen in an application, with supporting Java code.
What is intent?
A class (Intent) describes what a caller desires to do. The caller sends this intent to Android's intent resolver, which finds the most suitable activity for the intent.
How is nine-patch image different from a regular bitmap?
It is a resizable bitmap resource that can be used for backgrounds or other images on the device. The NinePatch class permits drawing a bitmap in nine sections. The four corners are unscaled; the four edges are scaled in one axis, and the middle is scaled in both axes.
What languages does Android support for application development?
Android applications are written using the Java programming language.
What is a resource?
A user-supplied XML, bitmap, or other file, injected into the application build process, which can later be loaded from code.
How will you record a phone call in Android? How to get a handle on Audio Stream for a call in Android?
Permissions.PROCESS_OUTGOING_CALLS: Allows an application to monitor, modify, or abort outgoing calls.
What's the difference between file, class and activity in android?
File - It is a block of arbitrary information, or resource for storing information. It can be of any type.
Class - Its a compiled form of .Java file . Android finally used this .class files to produce an executable apk
Activity - An activity is the equivalent of a Frame/Window in GUI toolkits. It is not a file or a file type it is just a class that can be extended in Android for loading UI elements on view.
What is a Sticky Intent?
sendStickyBroadcast() performs a sendBroadcast (Intent) that is "sticky," i.e. the Intent you are sending stays around after the broadcast is complete, so that others can quickly retrieve that data through the return value of registerReceiver (BroadcastReceiver, IntentFilter). In all other ways, this behaves the same as sendBroadcast(Intent).
One example of a sticky broadcast sent via the operating system is ACTION_BATTERY_CHANGED. When you call registerReceiver() for that action -- even with a null BroadcastReceiver -- you get the Intent that was last broadcast for that action. Hence, you can use this to find the state of the battery without necessarily registering for all future state changes in the battery.
Android动画可以帮助我们实现一些炫酷的效果,掌握动画主要在于练习。在面试中更多地根据实际需求回答。
正确答案: D
解析:Android动画有三种:View动画、帧动画、属性动画
Tween(补间动画),即View动画,包括了平移(Translate)、缩放(Scale)、旋转(Rotate)、透明度(Alpha),所以A、B正确。
Frame(帧动画)循序播放一组预先定义好的图片,所以C正确
属性动画(Property Animation)类名是:ValueAnimator、ObjectAnimator
我的个人博客