首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2021年Android面试题及答案收集(不断更新中)

Map中,HashMap使用键对象来计算hashcode值,HashMap比较快,因为是使用唯一的键来获取对象。...Android设计模式之MVC MVC即Model-View-Controller,M是模型,V是视图,C是控制器,MVC模式下系统框架的类库被划分为模型(Model)、视图(View)、控制器(Controller...用户与视图交互,视图接收并反馈用户的动作,视图把用户的请求传给相应的控制器,由控制器决定调用哪个模型,然后由模型调用相应的业务逻辑对用户请求进行加工处理,如果需要返回数据,模型会把相应的数据返回给控制器...,由控制器调用相应的视图,最终由视图格式化和渲染返回的数据,一个模型可以有多个视图,一个视图可以有多个控制器,一个控制器可以有多个模型。...,或者是被即时代码发生器有选择的转换成机器码执行。

90620
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    2019 Android 高级面试题总结 从java语言到AIDL使用与原理

    ,比如播放器的实现,面向过程的实现方式就是将播放视频的这个功能分解成多个过程,比如,加载视频地址,获取视频信息,初始化解码器,选择合适的解码器进行解码,读取解码后的帧进行视频格式转换和音频重采样,然后读取帧进行播放...,这是一个完整的过程,这个过程中不涉及类的概念,而面向对象最大的特点就是类,封装继承和多态是核心,同样的以播放器为例,一面向对象的方式来实现,将会针对每一个功能封装出一个对象,吧如说Muxer,获取视频信息...,Decoder,解码,格式转换器,视频播放器,音频播放器等,每一个功能对应一个对象,由这个对象来完成对应的功能,并且遵循单一职责原则,一个对象只做它相关的事情 在这由于文字很多,我总结了Android...SurfaceView:基于view视图进行拓展的视图类,更适合2D游戏的开发;是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view快,Camera预览界面使用SurfaceView...说下java虚拟机的理解,回收机制,JVM是如何回收对象的,有哪些方法等 一些java与Android源码相关知识等 大学成绩 大学那些专业,你哪方面学得好 单片机,嵌入式,电子线路。

    84120

    我的第一个 Mono for Android 应用

    Activity , 如何在 Activity 之间传递参数。...需要注意的是, 要添加一个硬件选项 GPU emulation , 并设置为 true , 开启 GPU 模拟, 可以加快模拟器运行速度, 否则模拟器运行真的会很慢。...,设置编译应用使用的 Android SDK 版本; Build/Mono for Android Build , 设置如 Linker 、 部署方式、 以及高级标签下的的 CPU架构、 国际化等;...Build/Mono for Android Application , 设置应用程序信息, 也就是 AndroidManifest.xml 文件的信息; 项目默认的目录结构如下如所示: ?...现在来创建 MainActivity 的视图, 先选中项目的 Resources/layout 目录, 在菜单栏上选择 File -> New -> File , 在弹出的新建文件对话框中选择 Android

    1K10

    Android训练课程(Android Training) - 构建你的第一个应用

    这节课将将向你展示如何在真实设备和模拟器中安装和启动你的应用,有两种方式:使用Eclipse或者命令提示符工具。...设置>开发者选项 注意:在安卓4.0或者更新一些的版本 开发者选择 默认是隐藏的。...在模拟器中启动 无论你使用Eclipse 或者命令提示行,要启动你的应用,你必须先创建一个Android Virtual Device (AVD),一个AVD是一个配置好的安卓模拟器,它运行你模拟不同的设备...6.在模拟器启动后,解锁模拟器屏幕。 在Eclipse中启动这个应用 1.打开一个你项目中的文件,并且点击工具栏中的 Run。...外部化(译者注:把...放到外部)的字符串通过为每一个字符串资源提供可供选择的定义的方式,使得你可以根据不同的语言来本地化你的应用。

    2.2K00

    Flutter 2.5正式版发布,带来重大更新

    另一个导致卡顿的原因是垃圾收集器 (GC) 暂停 UI 线程以回收内存。...以前某些图像的内存在响应 Dart VM 的 GC 执行时会延迟回收,作为早期版本中的解决方法,Flutter 引擎会通过 Dart VM 的 GC 回收暗示图像内存可以回收,这在理论上可以实现了更及时的内存回收...插件:相机、图像选择器和 plus 插件 新版本对相机插件、图像选择器插件进行了升级和优化,重点解决如下问题: #3795 [相机] android-rework 第 1 部分:支持 Android 相机功能的基类...借助DevTools,我们可以Frames图表中看到页面被渲染的完整渲染过程,并且可以在应用程序呈现时填充到此图表中,从此图表中选择一个帧就可以导航到该帧的时间线事件,我们可以使用这些事件来帮助诊断应用程序中的着色器编译卡顿问题...例如,屏幕截图中的“列” Widget 位于布局浏览器中的蓝色背景上,并且在 Widget 树视图中具有蓝色图标。

    4.4K50

    《Android编程权威指南》之Android开发初体验

    硬件设备 模拟器 or 真机 第一个Android应用 Android 开发基础 activity是Android SDK中Activity类的一个具体实例,负责管理用户与屏幕的交互。...GeoQuiz 创建Android项目 启动Android Studio -> File -> New Project(选择 Kotlin 语言),然后就是应用名呀,包名呀,选择SDK最低版本,选择模板什么的...创建字符串资源推荐把字符串都定义在app/res/values/string.xml文件 预览界面布局 写完布局文件,旁边可以预览效果 截图 从布局 XML 到视图对象 java目录是项目全部Java...R.java文件在Android项目编译过程中自动生成,不要随意修改。修改布局或字符串等资源后,R.java文件不会实时刷新。...组件的实际应用 主要就在讲如何在代码中获得布局文件中的组件,为之设置监听器等内容,现在很多项目都用一些注解类框架来简化这个过程,比如说ButterKnife,还有ViewBinding(AS3.6 才支持

    1.2K20

    Android Studio 新特性详解

    Android 设备支持 : Arctic Fox 包含大量针对 Android 设备的功能,如 Wear OS 上的心率传感器,以及支持 Google TV 的新版 Android TV 模拟器等功能...在本例中,gradle.properties 文件中还设置了 android.enableJetifier=true,这一环境变量用于将依赖库中的 Support 包迁移为等效的 Android X 软件包...来开启构建系统中的特定设置。...在示例项目启动后,您也许会注意到,当相机处于活动状态时,Android Studio 会给出如何在相机虚拟场景中进行导航的提示。...我们只需按住 Shift 键,就可以在模拟器呈现给相机的虚拟场景中移动视角。 嵌入式模拟器也可以访问所有扩展控件。例如,您可以设置导航路线、访问虚拟传感器等。

    2.8K20

    推荐一个检测 JS 内存泄漏的神器

    trace 显示了泄漏对象为何以及如何在内存中保持活动状态。打破引用链意味着泄漏的对象将不再可以从 GC 的根访问,因此可以进行垃圾回收。...在视图中,堆中的每个 JavaScript 对象或原生对象都是一个图节点,堆中的每个 JavaScript 引用都是一个图的边。...为了防止 Fiber 树中内存泄漏的级联效应,MemLab 添加了一个树的完整遍历,当组件在 React 18 中卸载时会进行清理。这可以让垃圾回收器在清理未挂载的树方面做得更好一点。...(V8 对 string interning 支持的不是很好,这是一种对具有相同值的字符串实例进行重复数据删除的优化。) 另外很大一部分字符串内存被 Relay 中缓存的键字符串消耗。...通过与 Relay 和 React Apps 团队合作,可以在客户端插入和缩短过长的字符串键来优化 Relay 缓存键字符串。

    3.7K20

    Flutter 2.5正式版发布,带来多项重大更新

    以前某些图像的内存在响应 Dart VM 的 GC 执行时会延迟回收,作为早期版本中的解决方法,Flutter 引擎会通过 Dart VM 的 GC 回收暗示图像内存可以回收,这在理论上可以实现了更及时的内存回收...插件:相机、图像选择器和 plus 插件 新版本对相机插件、图像选择器插件进行了升级和优化,重点解决如下问题: #3795 相机 android-rework 第 1 部分:支持 Android 相机功能的基类...#3898 image_picker 图像选择器修复相机设备 #3956 image_picker 将相机捕获的存储位置更改为 Android 上的内部缓存,以符合新的 Google Play 存储要求...[在这里插入图片描述] 借助DevTools,我们可以Frames图表中看到页面被渲染的完整渲染过程,并且可以在应用程序呈现时填充到此图表中,从此图表中选择一个帧就可以导航到该帧的时间线事件,我们可以使用这些事件来帮助诊断应用程序中的着色器编译卡顿问题...例如,屏幕截图中的“列” Widget 位于布局浏览器中的蓝色背景上,并且在 Widget 树视图中具有蓝色图标。

    3.6K00

    关于Flutter 2.5稳定版你知道多少?

    同时,加入了一些新的功能,包括对 Android 的全屏支持、 对 Material You (也称 v3) 的更多支持、对文本编辑的更新以支持切换键盘快捷键、在 Widget Inspector 中查看...在 Flutter 2.0 及其新文本编辑功能的基础上,我们在这个版本中添加了如文本选择器、拦截覆写任何键盘事件,以及覆写文本编辑的键盘快捷方式的能力 (#85381)。...从这个图表中选择一个构建帧,就可以跳转到该帧的时间线事件。 Flutter 引擎现在也能识别时间线中的着色器编译事件。...在插件的设置 / 偏好页面有一个新的文本字段。 注意,这对定义为类中静态常量的图标有效,如屏幕截图中的示例代码所示。...属性已被弃用 手势识别器清理 将 AnimationSheetBuilder.display 替换为 collate 使用 HTML 插槽在 Web 中渲染平台视图 将 LogicalKeySet 迁移至

    3.7K20

    【谷歌官方文档】1.1 建立第一个APP

    从 Android virtual device下拉菜单选择创建好的模拟器,点击OK; 模拟器启动需要几分钟的时间,启动完成后,解锁即可看到程序已经运行到模拟器屏幕上了。...View 是通用的 UI 窗体小组件,如:按钮(Button)、文本框(Text field);而 ViewGroup 则是用来定义子视图布局的不可见的容器,如:网格部件(grid)、垂直列表部件(vertical...资源对象 资源对象是与 APP 资源(如:位图、布局文件、字符串)关联的唯一整数。 在项目文件 gen/R.java 中,每个资源都有一个与之对应的资源对象。...你可以使用 R 类中的对象名称代指资源(如:在指定 android:hint 属性时需要的字符串)。...定义按钮的文本使用 android:text 属性,设置值为相似上一节中定义好的 button_send 字符串资源。

    2.4K20

    android值得珍藏的6个开源框架技术

    FinalBitmap的内存管理使用lru算法,没有使用弱引用(Android2.3以后Google已经不建议使用弱引用,Android2.3后强行回收软引用和弱引用,详情查看Android官方文档),...支持事务,默认关闭; 可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名); 支持绑定外键,保存实体时外键关联实体自动保存或更新; 自动加载外键关联实体...5、ThinkAndroid 项目地址:https://github.com/white-cat/ThinkAndroid 主要有以下模块: MVC模块:实现视图与模型的分离。...ioc模块:Android中的ioc模块,完全注解方式就可以进行UI绑定、res中的资源的读取、以及对象的初始化。 ...日志打印模块:可以较快的轻易的是实现日志打印,支持日志打印的扩展,目前支持对sdcard写入本地打印、以及控制台打印 下载器模块:可以简单的实现多线程下载、后台下载、断点续传、对下载进行控制、如开始、暂停

    86390

    Android Studio2.2下NDK开发初试

    很久没更博了,这次来记录一下如何在Android Studio2.2中进行NDK开发吧,NDK开发嘛,就是将C/C++的代码编译成so类库,供java调用(当然c调用java也是可以的),还记得以前没有...第二步,配置环境变量,在用户变量中添加NDK_ROOT = SDK所在目录/ndk-bundle 然后再在path变量中添加%NDK_ROOT% 第三步,选择工程文件的Project视图,在src/main...,如有些编译头设置,可以参考如下: APP_ABI := all APP_PLATFORM := android-8 APP_CFLAGS += -DSTDC_HEADERS 下一步,需要在app的build.gradle...("hello-jni"); } 然后,声明需要调用的native方法,参数,返回值都写好后,如: public static native String getHelloString();...首先,我们需要获取java中函数的methodID,例如我这里是获取设置进度条进度的方法,先获取方法所在jclass,需要注意的是,这里FindClass中第二个参数classname需要完整的类名,因此需要包名

    97750

    Android OOM分析

    内存回收 系统会根据内存中不同的内存数据类型分别执行不同的GC操作。...获取内存的阈值 为了整个Android系统的内存控制需要,Android系统为每个应用程序都设置了一个硬性的 DalvikHeapSize最大限制阈值,这个阈值在不同的设备上回因为RAM大小不同而有所差异...复用系统自带的资源 Android系统本身内置了许多的资源,如字符串、颜色、图片、动画、样式以及简单布局等,这些资源可以在应用程序中直接使用。这样做不仅仅可以减少应用程序的自身负重,减小APK的大小。...StringBuilder 当代码中需要使用到大量的字符串拼接操作,就有必要考虑使用StringBuilder来代替频繁的”+“。...注意监听器的注销 在Android程序里面存在很多需要register和unregister的监听器,需要确保在合适的时候及时unregister那些监听器。

    2.4K30

    Android UI布局优化之ViewStub

    在android的视图设计中,同样需要使用的这样的设计模式。 这样的视图加载起来需要耗费很多的时间。...也就是说,在调用inflate方法之前,ViewStub一直存在于视图树中,当调用inflate之后,ViewStub被加载的视图替换,到此,ViewStub的作用完成,之后ViewStub可能被内存回收..., 并把自己所有的layout属性给待加载的视图, 什么是layout属性呢,也就是下面以”android:layout_”打头的属性: 如android:layout_width以及layout_height...= null) { // 如果引用的视图未被垃圾回收器回收,则设置其可见性 view.setVisibility(visibility);...} else { // 如果引用的视图已经被垃圾回收器回收,则抛出异常 // 这也就是为什么setVisibility可以调用多次,但是并不推荐这样做的原因

    1K20
    领券