Android面试题大全

Android四大组件

Android六大布局

Android类加载器

在Android开发中,不管是插件化还是组件化,都是基于Android系统的类加载器ClassLoader来设计的。只不过Android平台上虚拟机运行的是Dex字节码,一种对class文件优化的产物,传统Class文件是一个Java源码文件会生成一个.class文件,而Android是把所有Class文件进行合并、优化,然后再生成一个最终的class.dex,目的是把不同class文件重复的东西只需保留一份,在早期的Android应用开发中,如果不对Android应用进行分dex处理,那么最后一个应用的apk只会有一个dex文件。

Android中常用的类加载器有两种,DexClassLoader和PathClassLoader,它们都继承于BaseDexClassLoader。区别在于调用父类构造器时,DexClassLoader多传了一个optimizedDirectory参数,这个目录必须是内部存储路径,用来缓存系统创建的Dex文件。而PathClassLoader该参数为null,只能加载内部存储目录的Dex文件。所以我们可以用DexClassLoader去加载外部的apk文件,这也是很多插件化技术的基础。

Android之View介绍

Android进程与线程

Android的数据存储

Android的系统架构

从小到上就是:linux,kernel,lib,dalvik vm,application,framework, app

Android应用程序结构

  1. main code
  2. unit test
  3. manifest
  4. res -> drawable,drawable-xxhdpi,layout,value,mipmap
    mipmap 是一种很早就有的技术了,翻译过来就是纹理映射技术.
    google建议只把启动图片放入。
  5. lib
  6. color

Android中的几种动画

帧动画:指通过指定每一帧的图片和播放时间,有序的进行播放而形成动画效果,比如想听的律动条。

视图动画(补间动画):指通过指定View的初始状态、变化时间、方式,通过一系列的算法去进行图形变换,从而形成动画效果,主要有Alpha、Scale、Translate、Rotate四种效果。注意:只是在视图层实现了动画效果,并没有真正改变View的属性,比如滑动列表,改变标题栏的透明度。

属性动画:在Android3.0的时候才支持,通过不断的改变View的属性,不断的重绘而形成动画效果。相比于视图动画,View的属性是真正改变了。比如view的旋转,放大,缩小。
通过变化属性来达到动画的效果,性能略差,支持点击等事件。android 3.0

Gif动画:原理和帧动画差不多,是canvas画出来。

Android内存溢出内存泄露

// 内存溢出:
out of memory:是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。内存溢出通俗的讲就是内存不够用。
// 内存泄露:
memory leak:是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光
// 内存泄露检测工具 → LeakCanary

跨进程通讯的几种方式

// Android 跨进程通信,像intent,contentProvider,广播,service都可以跨进程通信。
1、Files 文件系统(包括内存映射)
2、Sockets
3、Pipes 管道
4、共享内存
5、Intents, ContentProviders, Messenger
6、Binder

intent:这种跨进程方式并不是访问内存的形式,它需要传递一个uri,比如说打电话。
contentProvider:这种形式,是使用数据共享的形式进行数据共享。
service:远程服务,aidl
广播

Android为什么不能在子线程更新UI

Android程序运行时权限与文件系统权限的区别

文件的系统权限是由linux系统规定的,只读,读写等。
运行时权限是对于某个系统上的app的访问权限,允许,拒绝,询问。这个可以防止非法的程序访问敏感的信息。

Activity详解

Service介绍

Context

Context是一个抽象基类。在翻译为上下文,也可以理解为环境,是提供一些程序的运行环境基础信息。


Context下有两个子类,ContextWrapper是上下文功能的封装类,而ContextImpl则是上下文功能的实现类。
而ContextWrapper又有三个直接的子类, ContextThemeWrapper、Service和Application。
其中,ContextThemeWrapper是一个带主题的封装类,而它有一个直接子类就是Activity,所以Activity和Service以及Application的Context是不一样的,只有Activity需要主题,Service不需要主题。


Context一共有三种类型,分别是Application、Activity和Service。
这三个类虽然分别各种承担着不同的作用,但它们都属于Context的一种,而它们具体Context的功能则是由ContextImpl类去实现的,因此在绝大多数场景下,Activity、Service和Application这三种类型的Context都是可以通用的。不过有几种场景比较特殊,比如启动Activity,还有弹出Dialog。出于安全原因的考虑,Android是不允许Activity或Dialog凭空出现的,一个Activity的启动必须要建立在另一个Activity的基础之上,也就是以此形成的返回栈。而Dialog则必须在一个Activity上面弹出(除非是System Alert类型的Dialog),因此在这种场景下,我们只能使用Activity类型的Context,否则将会出错。


getApplicationContext()和getApplication()方法得到的对象都是同一个application对象,只是对象的类型不一样。


Context数量 = Activity数量 + Service数量 + 1(1为Application)

Intent

Intent —— 意图
用于 android 个组件的启动和组件间传递数据
属性:
component —— 目标组件描述
action —— 对Intent执行动作的描述
data —— 对此次Intent操作相关数据的描述
type —— 对Intent所关联的数据类型的描述
category —— 对Intent执行动作的附加信息描述
extra —— 对其他一切附加信息的描述,他是对其他所有附加信息的集合
Intent-Filter —— 意图 过滤器

IntentFilter

IntentFilter —— 意图过滤器
对 Intent 的描述进行过滤操作,对 Intent 的各个属性进行匹配,从而选择出相应的组件来执行 Intent 想要进行的操作
在 IntentFilter中action、category、data都可以存在多个
匹配原则
action —— Intent 中的 action 只要和 IntentFilter 中的任意一个 action 一样即可
category —— Intent 中添加的 category 必须全部在 IntentFileter 定义的 category 中
data —— Intent 中的 data 要和 IntentFilter 中的 data 的描述匹配
type —— Intent 中的 type 要和 IntentFilter 中 data 要求的 mimeType 一致

Handler、Message、MessageQueue、Looper详解

Socket通信相关

EventBus相关

Fragment简介

Java反射机制

apk简单介绍(组成以及打包安装流程)

Android之代码混淆

Android事件冲突原理及解决方法

Android签名算法的原理

Android常用的延迟执行任务及轮询定时任务的几种方式

Android判断应用是否在前台运行

Binder机制详解

Bundle介绍

(持续更新中…)

  • 16
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是阿超

现在二师兄的肉比师父的都贵了.

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值