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文件(底包)刷到機器里面。