Android基本常识

Android基本常识

八月 03, 2019

Android基本常识

1、10个简单并且基础的Linux命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
mkdir 创建文件夹 

rmdir 删除文件夹

rm 删除文件

mv 移动文件

cp 拷贝文件

cat 查看文件

tail 查看文件尾部

more 分页查看文件

cd 切换当前目录

ls 列出文件清单

reboot 重启

date 显示日期

cal 显示日历

ps 查看系统进程相当于

windows 的任务管理器

ifconfig 配置网络

2、Android工程的目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
src 源文件 

gen 生成的文件 R 文件就在此

android. jar 依赖的 android sdk

assets 资源文件

bin 生成的字节码 apk 在此

libs 依赖 jar 和 so

res 资源文件

drawable

drawable-hdpi

layout

menu

values

AndroidManifest.xml

project.properties

3、什么是 ANR 如何避免它?

在 Android 上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话
框称作应 用程序无响应(ANR:Application Not Responding)对话框。用户可以选择让程序继续运
行,但是,他们在使用你 的应用程序时,并不希望每次都要处理这个对话框。因此,在程序里对响应性能
的设计很重要,这样,系统不会显示 ANR 给用户。

不同的组件发生 ANR 的时间不一样,主线程Activity是 5 秒,BroadCastReceiver是 10 秒,
Service是 20 秒。

解决方案:

将所有耗时操作,比如访问网络,Socket 通信,查询大量 SQL 语句,复杂逻辑计算等都放在子线程中
去,然后 通过 handler.sendMessage、runonUITread、AsyncTask 等方式更新 UI。无论如何都要确
保用户界面操作的流畅度。 如果耗时操作需要让用户等待,那么可以在界面上显示进度条。

4、谈谈 Android 的优点和不足之处

优点:

1、开放性,开源,免费,可定制

2、挣脱运营商束缚

3、丰富的硬件选择

4、不受任何限制的开发商

5、无缝结合的 Google 应用

缺点:

1、安全问题、隐私问题

2、同质化严重

3、运营商对 Android 手机仍然有影响

4、山寨化严重

5、过分依赖开发商,缺乏标准配置

5、一条最长的短信息约占多少 byte

在国内的三大运营商通常情况下中文 70(包括标点),英文 160 个。对于国外的其他运行商具体多长需要
看运营商 类型了。

android 内部是通过如下代码进行判断具体一个短信多少 byte 的。

ArrayList android.telephony.SmsManager.divideMessage(String text)

6、判断是否有 SD 卡

通过如下方法:

Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)

如果返回 true 就是有 sdcard,如果返回 false 则没有。

7、dvm 的进程和 Linux 的进程, 应用程序的进程是否为同一个概念

dvm 指 dalvik 的虚拟机。每一个 Android 应用程序都拥有一个独立的 Dalvik 虚拟机实例,应用程序
都在它自己的 进程中运行。而每一个 dvm 都是在 Linux 中的一个进程,所以说可以近似认为是同一个
概念。

什么是 android DVM:Dalvik 是 Google 公司自己设计用于 Android 平台的 Java 虚拟机,每一个
Dalvik 应用作 为一个独立的 Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被
关闭。

Dalvik 和 Java 虚拟机的区别

1:Dalvik 主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等等重
要功能。

2:Dalvik 负责进程隔离和线程管理,每一个 Android 应用在底层都会对应一个独立的 Dalvik 虚拟
机实例,其代 码在虚拟机的解释下得以执行。

3:不同于 Java 虚拟机运行 java 字节码,Dalvik 虚拟机运行的是其专有的文件格式 Dex

4: dex 文件格式可以减少整体文件尺寸,提高 I/O 操作的类查找速度。

5: odex 是为了在运行过程中进一步提高性能,对 dex 文件的进一步优化。

6:所有的 Android 应用的线程都对应一个 Linux 线程,虚拟机因而可以更多的依赖操作系统的线程调
度和管理 机制

7:有一个特殊的虚拟机进程 Zygote,他是虚拟机实例的孵化器。它在系统启动的时候就会产生,它会完
成虚拟 机的初始化,库的加载,预制类库和初始化的操作。如果系统需要一个新的虚拟机实例,它会迅速
复制自身,以最快 的数据提供给系统。对于一些只读的系统库,所有虚拟机实例都和 Zygote 共享一块
内存区域。

8、Android 程序与 Java 程序的区别

Android 程序用 android sdk 开发,java 程序用 javasdk 开发.

Android SDK 引用了大部分的 Java SDK,少数部分被 Android SDK 抛弃,比如说界面部分,
java.awt swing package 除了 java.awt.font 被引用外,其他都被抛弃,在 Android 平台开发中
不能使用。android sdk 添加工具 jar httpclient , pull opengl

9、启动应用后,改变系统语言,应用的语言会改变么

这个一般是不会的,一般需要重启应用才能改变应用语言。但是对应应用来说如果做了国际化处理则支持
如果没 有处理那系统语言再更改也是无用的。

10、adb、ddms、aapt 的作用

adb 是 Android Debug Bridge ,Android 调试桥的意思,ddms 是 Dalvik Debug Monitor
Service,dalvik 调 试监视服务。aapt 即 Android Asset Packaging Tool,在 SDK 的
build-tools 目录下。该工具可以查看,创建, 更 新 ZIP 格式的文档附件(zip, jar, apk)。也可将
资源文件编译成二进制文件,尽管我们没有直接使用过该工具,但是开 发工具会使用这个工具打包 apk
文件构成一个 Android 应用程序。

Android 的主要调试工具是 adb(Android debuging bridge),ddms 是一个在 adb 基础上的一个图
形化工具。

adb,它是一个命令行工具。而 ddms 功能与 adb 相同,只是它有一个图形化界面。对不喜欢命今操作方
式的人来说是一个不错的选择。

11、ddms 和 traceview 的区别

ddms 原意是:davik debug monitor service。简单的说 ddms 是一个程序执行查看器,在里面可以
看见线 程和堆栈等信息,traceView 是程序性能分析器。traceview 是 ddms 中的一部分内容。

12、DVM 和 JVM 的区别

a) dvm 执行的是.dex 文件,而 jvm 执行的是.class。Android 工程编译后的所有.class 字节码会
被 dex 工具抽 取到一个.dex 文件中。

b) dvm 是基于寄存器的虚拟机 而 jvm 执行是基于虚拟栈的虚拟机。寄存器存取速度比栈快的多,dvm
可以根 据硬件实现最大的优化,比较适合移动设备。

c) .class 文件存在很多的冗余信息,dex 工具会去除冗余信息,并把所有的.class 文件整合到.dex
文件中。减少 了 I/O 操作,提高了类的查找速度。

13、Android 的安全机制

1、Android 是基于 Linux 内核的,因此 Linux 对文件权限的控制同样适用于 Android

在 Android 中每个应用都有自己的/data/data/包名 文件夹,该文件夹只能该应用访问,而其他应用则
无权 访问。

2、Android 的权限机制保护了用户的合法权益

如果我们的代码想拨打电话、发送短信、访问通信录、定位、访问 sdcard 等所有可能侵犯用于权益的行
为都 是必须要在 AndroidManifest.xml 中进行声明的,这样就给了用户一个知情权。

3、Android 的代码混淆保护了开发者的劳动成果

14、Android 中进程的级别有哪些

a) Foreground process (前台进程)

b) Visible process (可见进程)

c) Service process (服务进程)

d) Background process (后台进程)

e) Empty process (空进程)

15、sp 频繁操作有什么后果 sp 能存多少数据

Sp 的底层是由 xml 来实现的,操作 sp 的过程就是 xml 的序列化和解析的过程。Xml 是存储在磁盘上
的,因此考 虑到需要 I/O 速度问题,sp 不适宜频繁操作。同时序列化 xml 是就是将内存中的数据写
到 xml 文件中,由于 dvm 的 内存是很有限的,因此单个 sp 文件不建议太大,具体多大是没有一个具
体的要求的,但是我们知道 DVM 堆内存也就 是 16M,因此数据大小肯定不能超过这个数字的。其实 sp
设置的目的就是为了保存用户的偏好和配置信息的,因此 不要保存太多的数据。

16、Android 的系统架构

1、 android 系统架构分从下往上为 linux 内核层、运行库、应用程序框架层、和应用程序层。

2、 linuxkernel:负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。

3、 libraries 和 androidruntime:libraries:即 c/c++函数库部分,大多数都是开放源代码的函
数库,例如 webkit,该函数库负责 android 网页浏览器的运行,例如标准的 c 函数库 libc、
openssl、sqlite 等,当然 也包括支持游戏开发 2dsgl 和 3dopengles,在多媒体方面有
mediaframework 框架来支持各种影音和图形文件的播放与显示,例如 mpeg4、h.264、mp3、aac、
amr、jpg 和 png 等众多的多媒体文件格式。android 的 runtime 负责解释和执行生成的 dalvik 格
式的字节码。

4、 applicationframework(应用软件架构),java 应用程序开发人员主要是使用该层封装好的 api
进行快速开发。

5、 applications:该层是 java 的应用程序层,android 内置的 googlemaps、e-mail、即时通信工
具、浏览器、 mp3 播放 器等处于该层,java 开发人员开发的程序也处于该层,而且和内置的应用程序
具有平等的位置, 可以调用内置的应用程序,也可以替换内置的应用程序。