1.简要描述android开发的四大应用程序组件
- Activity:Activity是android程序和用户交互的窗口,是android构造块中基本的一种,它需要为保持个界面的状态,做很多持久化的事,妥善管理生命周期及一些跳转。
- service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关事务。
- Content Provider:android提供的第三方应用程序的访问方案,可以派生ContentProvider类,对外提供数据。
- BroadCast Receiver:接收一种或多种intent做触发事件,接收相关消息,做一些简单的处理,转换成一条Notification,统一了android的事件广播模型。
2.AndroidManifest.xml文件中主要包括哪些信息?
- 用户权限
- 包名,版本号
- 应用程序Application
3.描述一下Android的数字签名
- 目的:为你的程序打上一种标识,来作为自己的标识,当别人看到你的签名时,就会知道这是与你相关的。
- 好处:
- 有利于程序升级:当新版程序和旧版程序的数字证书相同时,Android系统才会认为这两个程序是同一个程序的不同版本
- 有利于程序的模块化开发和设计:Android系统允许拥有同一个数字签名的程序运行在一个进程中,Android程序会将他们视为同一个程序。所以开发者可以将自己的程序分模块开发,而用户只需要在需要的时候下载适当的模块。
- 可以通过权限(permission)的方式在多个程序间共享数据和代码:应用程序可以和其他的程序共享概功能或者数据给那那些与自己拥有相同数字证书的程序
4.谈一下你对Android权限的理解
在Android 6.0版本之前,权限都是一条龙服务的,只要用户安装完,AndroidManifest清单上申请的权限都会被系统默认授权,并且授权后也撤销不了。这样的弊端在哪里呢?有些权限可能用户觉得不需要,比如他不想有通知的权限,不想受到通知的干扰,那么他就不能屏蔽通知,就是不需要的权限,他去不掉,自主权不在他那边。还有一些情况是,一些恶意程序,会利用这个权限默认授权,进行恶意获取用户数据和攻击。所以Android 6.0版本,一方面让用户更加容易的控制自己的隐私,一方面需要重新适配应用权限。只有在用户需要使用权限的时候,才去授权请求,这样做的目的是提高用户体验
-
检查并申请权限
我们需要在用到权限的地方,每次都检查是否APP已经拥有权限,
比如我们有一个下载功能,需要写SD卡的权限,
我们在写入之前检查是否有WRITE_EXTERNAL_STORAGE权限,没有则申请权限if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { //申请WRITE_EXTERNAL_STORAGE权限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_EXTERNAL_STORAGE_REQUEST_CODE); }
用户选择允许或需要后,会回调onRequestPermissionsResult方法, 该方法类似于onActivityResult
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
doNext(requestCode,grantResults);
}我们接着需要根据requestCode和grantResults(授权结果)做相应的后续处理
private void doNext(int requestCode, int[] grantResults) {
if (requestCode == WRITE_EXTERNAL_STORAGE_REQUEST_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission Granted
} else {
// Permission Denied
}
}
}
5.请写出几种Android数据存储的方式
- SharedPreference :主要存放一些配置信息
- SQLite
- 文件存储
- Content Provider
- 网络存储
6.对android NDk的理解
7.谈谈对ROM,ROOT,RECOVER,BOOTLOADER的理解
- ROM:只读内存镜像。用于写入系统分区的镜像文件
- ROOT:Android源于Linux,root是Linux下系统级账号,拥有系统的全部权限,为了保护系统安全,Android设计上是不会开放这个用户的。
ROOT原理:通过在Android系统安装某个系统级别的服务,该服务具有root权限,然后其它需要root权限的程序再向这个服务请求root权限 - RECOVER:Recovery模式指的是一种可以对安卓机内部的数据或系统进行修改的模式,也叫工程模式(类似于windowspe)。在这个模式下我们可以刷入新的安卓系统,或者对已有的系统进行备份或升级,也可以在此恢复出厂设置。
- BOOTLOADER:相当于电脑里面的bios(基本输入输出系统),手机一开机,控制手机的就是Bootloader。我们通常所说的进入Bootloader,实际上是指进入Bootloader的工程模式,既是刷机模式,在此模式下可以将moto的sbf文件(底包)刷到机器里面。