失效链接处理 |
Android高级进阶知识点 PDF 下载
本站整理下载:
相关截图:
主要内容:
1、如何进行单元测试,如何保证 App 稳定 ? 参考回答:
要测试 Android 应用程序,通常会创建以下类型自动单元测试
本地测试:只在本地机器 JVM 上运行,以最小化执
行时间,这种单元测试不依赖于 Android 框架,或
者即使有依赖,也很方便使用模拟框架来模拟依
赖,以达到隔离 Android 依赖的目的,模拟框架如
Google 推荐的 Mockito; 检测测试:真机或模拟器上运行的单元测试,由于
需要跑到设备上,比较慢,这些测试可以访问仪器
(Android 系统)信息,比如被测应用程序的上下
文,一般地,依赖不太方便通过模拟框架模拟时采
用这种方式;
o 注意:单元测试不适合测试复杂的 UI 交互事件
o App 的稳定主要决定于整体的系统架构设计,同时也不可
忽略代码编程的细节规范,正所谓“千里之堤,溃于蚁
穴”,一旦考虑不周,看似无关紧要的代码片段可能会带
来整体软件系统的崩溃,所以上线之前除了自己本地化测
试之外还需要进行 Monkey 压力测试
o 少部分面试官可能会延伸,如 Gradle 自动化测试、机型适
配测试等
2、Android 中如何查看一个对象的回收情况 ? 参考回答:
o 首先要了解 Java 四种引用类型的场景和使用(强引用、软
引用、弱引用、虛引用)
o 举个场景例子:SoftReference 对象是用来保存软引用
的,但它同时也是一个 Java 对象,所以当软引用对象被回
收之后,虽然这个 SoftReference 对象的 get 方法返回
null,但 SoftReference 对象本身并不是 null,而此时这
个 SoftReference 对象已经不再具有存在的价值,需要一
个适当的清除机制,避免大量 SoftReference 对象带来的
内存泄露
o 因此,Java 提供 ReferenceQueue 来处理引用对象的回收
情况。当 SoftReference 所引用的对象被 GC 后,JVM 会先
将 softReference 对象添加到 ReferenceQueue 这个队列
中。当我们调用 ReferenceQueue 的 poll()方法,如果这
个队列中不是空队列,那么将返回并移除前面添加的那个
Reference 对象。
3、Apk 的大小如何压缩 ? 参考回答:
o 一个完整 APK 包含以下目录(将 APK 文件拖到 Android
Studio):
META-INF/:包含 CERT.SF 和 CERT.RSA 签名文件以
及 MANIFEST.MF 清单文件。
assets/:包含应用可以使用 AssetManager 对象检
索的应用资源。
res/:包含未编译到的资源 resources.arsc。 lib/:包含特定于处理器软件层的编译代码。该目
录包含了每种平台的子目录,像 armeabi,
armeabi-v7a, arm64-v8a,x86,x86_64,和
mips。 resources.arsc:包含已编译的资源。该文件包含
res/values/ 文件夹所有配置中的 XML 内容。打包
工具提取此 XML 内容,将其编译为二进制格式,并
将内容归档。此内容包括语言字符串和样式,以及
直接包含在**resources.arsc*8 文件中的内容路
径 ,例如布局文件和图像。
classes.dex:包含以 Dalvik / ART 虚拟机可理解的
DEX 文件格式编译的类。
AndroidManifest.xml:包含核心 Android 清单文
件。该文件列出应用程序的名称,版本,访问权限
|