Android面试
Android面试常问到的
day_moon
这个作者很懒,什么都没留下…
展开
-
jvm面试原理
1、什么是JVMJVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行转载 2021-12-31 04:19:50 · 984 阅读 · 0 评论 -
Android Handler消息机制
1. Handler、Looper、Message、MessageQueue之间的关系2.ThreadLocal 是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只有再指定线程中可以获取到存储的数据,对于其他线程来说则无法获取到数据。他的作用是帮助Handler获得当前线程的Looper(多个线程可能有多个Looper)。3.主线程(ActivityThread),被创建的时候就会创建一个Looper。prepareMainLooper() : UI线程(Ac原创 2021-12-31 04:12:36 · 437 阅读 · 0 评论 -
android 低功耗蓝牙
连接蓝牙的过程出现的问题:1.经常断开连接gatt失败或者没有发现服务进行重连。2.传大量数据出现部分数据丢失问题。用mHandler.obtainMessage来获取对象,在快传大量数据的过程中,MessageQueue大小有限,如果消息处理不及时,而又有新的数据写入,有可能造成message被覆盖,也就出现了数据丢失现象。3.丢包包长度,和包校验码和原数据 丢包检测和丢包回传机制...原创 2021-12-30 00:39:24 · 1247 阅读 · 0 评论 -
Android中图片的三级缓存
为什么要使用三级缓存如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了 假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的状况下,对于非wifi用户来说,流量还是很贵的,一个很耗流量的应用,其用户数量级肯定要受到影响 特别是,当我们想要重复浏览一些图片时,如果每一次浏览都需要通过网络获取,流量的浪费可想而知 所以提出三级缓存策略,通过网络、本地、内存三级缓存图片,来减少不必要的网络交互,避免浪费流量什么是三级缓存网络缓存, 不优先加载,转载 2021-12-26 08:48:56 · 870 阅读 · 0 评论 -
android版本适配
Android 6 权限适配Android 7适配FileProvider删除隐式广播Android 8.0 适配自适应启动图标安装APK,允许未知来源集合的处理判空处理通知适配悬浮窗适配Android9.0适配刘海屏API支持前台服务需要添加权限限制静态广播的接收非全屏透明Activity禁用设置orientation非 SDK 接口访问限制非Activity-Context启动Activity,现在强制执行 FLAG_ACTIV...转载 2021-12-26 08:48:09 · 109 阅读 · 0 评论 -
Android Glide Fresco Picasso 对比
Picasso,不支持gifGlide优点 多种图片格式的缓存,适用于更多的内容表现形式(如Gif、WebP、缩略图、Video)生命周期集成(根据Activity或者Fragment的生命周期管理图片加载请求)高效处理Bitmap(bitmap的复用和主动回收,减少系统回收压力)高效的缓存策略,灵活(Picasso只会缓存原始尺寸的图片,Glide缓存的是多种规格),加载速度快且内存开销小(默认Bitmap格式的不同,使得内存开销是Picasso的一半)缺点: 没有文件缓...原创 2021-12-25 10:00:25 · 823 阅读 · 0 评论 -
kotlin线程与协程的区别
协程可以说是对线程的一种封装,本质呢还是一个轻量级的线程!可以说是AsyncTask的一个替代。线程是同步机制,而协程则是异步。线程是操作系统调度,协程是应用系统自己调度。线程是抢占式,而协程是非抢占式的。...原创 2021-12-25 09:59:28 · 1545 阅读 · 0 评论 -
Android性能优化
第一.布局优化LinearLayout和RelativeLayout都可以完成布局的情况下优先选择LinearLayout。复用布局:< include >延迟加载:< ViewStub > 标签来加载不常用的布局减少布局的嵌套层次:< Merge >第二.绘制优化onDraw中不要创建新的局部对象和做耗时的任务第三 网络优化工具:Network Monitor,Charles,Fiddler,Stecho接口:API设计要合理 ;..原创 2021-12-25 09:58:30 · 261 阅读 · 0 评论 -
Android数据存储五种方式
SharedPreferences:数据保存在/data/data/<PackageName>/shared_prefs 保存少量的数据,且这些数据的格式非常简单,例如应用程序的各种配置信息。存储数据格式:键值对文件存储数据:1.Context提供了openFileInput和openFileOutput,保存在data/data/<package name>/files目录内。2.读写sdcard上的文件:先判断手机上是否插了sd卡;获取外部存储器;使用IO流操作SD卡上的..原创 2021-12-25 09:57:34 · 1074 阅读 · 0 评论 -
网络传输协议 xml、json、protobuf
xml、json、protobufxml:用于标记电子文件使其具有结构性的标记语言json:是一种简单的消息格式protobuf:由Google开发的二进制格式xml解析DOM解析:DOM解析XML文件时,会将XML文件的所有内容读取到内存中,然后允许您使用DOM API遍历XML树、检索所需的数据。xml树在内存中完整存储,因此可以直接修改其数据和结构。SAX:解析器会判断当前读到的字符是否合法XML 语法中的某部分,如果符合就会触发事件,也就是事件驱动。需要顺序执行,所以很难原创 2021-12-25 09:56:21 · 1426 阅读 · 0 评论 -
Android 内存泄漏和溢出
内存泄漏的本质:不再用到的对象,被错误的引用,而无法被回收造成内存泄漏的场景:单例; 静态变量; 非静态内部类; 未取消注册或回调;Timer和TimerTask;集合中的对象未清理;资源未关闭或释放;属性动画;WebView解决:1.对于生命周期比Activity长的对象(单例),要避免直接引用Activity的context,可以考虑使用ApplicationContext,静态变量不使用时及时置空2.Handler持有的引用最好使用弱引用,在Activity被释放的时候要记得清空M原创 2021-12-25 09:55:33 · 121 阅读 · 0 评论 -
Android 项目框架和架构
架构、框架是一种从大到小的关系,也是一种组合关系。架构:组件化和插件化框架:MVC MVP MVVM1.组件化和插件化区别组件化:将一个app分成多个模块,每个模块都是一个组件(Module),开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件等,但是最终发布的时候是将这些组件合并成一个apk。插件化:将整个app拆分成很多模块,这些模块包括一个宿主和多个插件,每个模块都是一个apk(组件化的每个模块是个lib),最终打包的时候将宿主apk和插件apk分开或者联合打包。组件化原创 2021-12-25 09:54:35 · 463 阅读 · 0 评论 -
Android Service
Android Service生命周期1.startService与bindService区别activity与startService联系,通过intent进行bindService与startService联系,通过Binder进行。创建 IBinder 接口的实例扩展 Binder 类:服务于绑定组件运行在同一进程时可以使用这种方式创建 IBinder。Messenger:服务于绑定组件运行在不同进程时,使用它可以实现跨进程通信,也是 IPC 最简单的方式。AI..原创 2021-12-25 09:53:37 · 68 阅读 · 0 评论 -
Activity生命周期
Activity生命周期1.首次进来的生命周期onCreate->onStart->onResume2.按home的生命周期 ,也就是退回后台onPause->onStop3.按返回的生命周期,销毁当前窗体onPause->onStop->onDestroy3.跳转到新窗体的生命周期,先暂停后启动再停止onPause->onCreate1->onStart1->onResume1->onStop4.竖屏转横屏.原创 2021-12-25 09:52:08 · 72 阅读 · 0 评论 -
android 屏幕适配
android屏幕适配本质要解决的问题是1.组件所在布局的位置2.组件的宽高3.单双布局(双布局,一个屏幕显示多个内容)解决第一个问题1.约束布局 2.相对布局 3.百分比布局解决第二个问题1.wrap_content match_parent weight2.dp 3.dimens适配图片 1用.9图 2.bitmap用比例 3.多套图片放在不同的资源目录下解决第三个问题1.配置多套布局 根据内容配置 2.限定符...原创 2021-12-25 09:50:46 · 81 阅读 · 0 评论