首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Android面试锦集
AntDream
创建于2024-05-07
订阅专栏
Android面试的方方面面
等 160 人订阅
共198篇文章
创建于2024-05-07
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Android面试题之kotlin热流和channel
于冷流不同,在垃圾回收之前,flow里的值都是存在内存之中,并且处于活跃状态 StateFlow StateFlow是一个状态容器式可观察数据流,可以向其收集器发出当前状态更新和新状态更新。还可通过其
Android自定义View之事件分发机制总结
ViewGroup中有3个跟事件分发有关的方法,分别是 dispatchTouchEvent、 onInterceptTouchEvent、onTouchEvent。 dispatchTouchEvent方法用来进行事件的分发。事件传递到当前View时,这个方法就会被调用。di…
源码解析Activity的启动流程
看上面的源码,这里需要注意的是这里会走mParent==null这个分支。mParent代表的是ActivityGroup,也就是一个Activity里面再嵌套Activity,这种方式已经被Fragment替代了。 这里的mMainThread就是ActivityThread…
SharedPreferences的Commit和Apply
把注释拿出来了,大家可以看下。 commit和apply方法都是用来提交更改的,而且提交多次的话会以最后一次提交的为准,也就是最后一次的更改是最终的结果,这个很好理解。 commit方法有返回值,提交成功会返回true,失败返回false;而apply方法没有返回值。 comm…
Android内存优化之图片内存优化
所以我们需要不同分辨率的图片来放在对应的目录下来做适配,否则Android系统可能会将我们的图片拉伸导致变形。 图片的压缩是指我们需要根据View所实际需要的图片尺寸来加载对应大小的图片。一般我们用的图片加载第三方库,比如Glide,都已经帮我们做了处理。所以这里的图片压缩我们…
深入理解Java虚拟机(四)之JVM调优和Android Studio的GC日志
其中的JConsole 和Visual GC是插件,需要另外安装。 插件的安装分为在线安装和手动安装,推荐用在线安装。在线安装首先要在“设置”选项卡里面添加新的更新配置,配置好如图的链接,因为默认的链接已经失效了。需要注意的是JDK的版本不一样,链接也不一样。VisualVM官…
Android面试之Java基础笔试题
按照数据流的方向不同可以分为:输入流和输出流。 按照处理数据单位不同可以分为:字节流和字符流。 按照实现功能不同可以分为:节点流和处理流。 String类型里的汉字,按照编码格式的不同,分为2-4个字节的占用,UTF-8占用3个字节,特别的占用4个字节,一个汉字占三个字节,所以…
Android自定义View之invalidate方法和postInvalidate方法
我们在自定义View时免不了要使用invalidate方法,这个方法的作用大家也比较清楚,就是让我们的View进行刷新重新绘制的。但是postInvalidate方法可能就不是那么熟悉了,因为平时开发时invalidate方法相对而言会用得比较多。不过需要大家注意的是,面试官在…
Android多线程之ArrayBlockingQueue源码解析
阻塞队列系列Android多线程之LinkedBlockingQueue源码解析Android多线程之SynchronousQueue源码解析Andorid多线程之DelayQueue源码分析Arra
Android自定义View之Canvas的使用
用继承View的方式来自定义View,我们就需要重写onDraw方法,也就是得咱自己来画图了。画图就得用到画笔和画布,也就是Paint和Canvas。我们来了解下Canvas。 可以理解为PS中的合并图层操作。作用是在save()之后绘制的所有图像和save()之前的图像进行合…
Android多进程之Binder解绑监听的问题
利用Binder进行进程间通信,Binder会把客户端传递的参数AIDL接口和Parcelable对象,重新转化并生成一个新的对象。因为对象是不能跨进程传输的,对象的跨进程传输本质上就是序列化和反序列化的过程。所以上述情况服务端根本就没有客户端的那个对象,那肯定找不到会解绑失败…
Android 多线程之几个基本问题
可运行(Runnable):一旦调用了start方法,线程就处于这种状态。需要注意的是此时线程可能正在执行,也可能在等待CPU分配执行的时间 阻塞状态(Blocked):表示线程被锁阻塞,等待获取到一个排他锁。在程序等待进入同步区域时,线程将进入这种状态 等待状态(Waitin…
Android 多线程之正确使用线程池
corePoolSize:表示核心线程数。默认情况下核心线程会在线程池中一直存活,即使处于闲置状态。如果将ThreadPoolExecutor的allowCoreThreadTimeOut属性设置为true,那核心线程也会有超时策略,时间间隔由keepAliveTime指定 m…
深入理解Java虚拟机(八)之Java内存模型
volatile的可见性是在执行volatile变量的赋值操作时,都会执行存储、写入主内存的操作,从而达到主内存中的变量始终是最新的效果;而在执行加载操作时,都会先执行从主内存读的操作,从而保证每次加载的变量都是主内存中最新的。以上就达到了可见性 不可变:如果共享的数据是一个基…
Android 混淆简单入门
zipAlign可以让安装包中的资源按4字节对齐,这样可以减少应用在运行时的内存消耗。所以打包正式版最好也开启。
深入理解Java虚拟机(五)之Class类文件的底层结构
Class文件是以一组8位字节为基础单位的二进制流,中间没有分隔符。 每个Class文件的头四个字节称为魔数,用于确定这个文件是否为一个能被虚拟机接受的Class文件。Class文件的魔数值为:0xCAFEBABE 紧接着魔数的4个字节存储的是Class文件的版本号,分为次版本…
SharedPreferences你用对了吗
把注释拿出来了,大家可以看下。 commit和apply方法都是用来提交更改的,而且提交多次的话会以最后一次提交的为准,也就是最后一次的更改是最终的结果,这个很好理解。 commit方法有返回值,提交成功会返回true,失败返回false;而apply方法没有返回值。 comm…
Android自定义View之Paint绘制文字和线
字体样式有很多,除了常见的加粗,还有斜体等。这些都在Typeface类中 style有3种,分别为实心、空心和实心描边。 4.设置缩放:setTextScaleX(float scaleX)。scaleX范围在0-1之间为缩小,大于1为放大 6.设置Paint的抗锯齿Flag。…
Android 设计模式之简单工厂模式
简单工厂方法比较简单。它使用户根据参数获得对应的实例,避免直接实例化类,降低了耦合性。 可实例化的类型在编译期间已经被确定。如果增加新类型,则需要修改工厂类,这样的化就违背了开闭原则。 简单工厂需要知道所有要生成的类型,当子类过多或者子类层次过多时不适合使用。而工厂方法模式就没…
Android自定义View之Window、ViewRootImpl和View的三大流程
View的三大流程指的是measure(测量)、layout(布局)、draw(绘制)。 setMeasuredDimension方法会设置View的测量宽高,所以我们知道getDefaultSize方法返回的就是View的测量宽高。我们来看看getDefaultSize方法 …
下一页